【Redis 系列】Redis详解

Redis原理详解系列-Redis集群 一个Redis集群通常由多个节点组成,刚开始的时候,每个节点都是相互独立运行的,一个节点,就是一个单独运行的Redis服务器,他们都处于一个只包含自己的集群当中,要建立一个真正可工作的集群,我们必须将各个节点连接起来,构成一个包含多个节点的集群。Redis集群的节点分为主节点和从节点,主节点负责处理槽,从节点负责复制某个主节点的数据,当被复制的主节点下线时,代替下线的主节点继续处理命令请求。上一节,8000,8001节点已经组成了一个简单的集群,但是集群还没有上线,这是因为16384个槽还没有处理任何槽。 阅读详情


🚀 欢迎来到我的优快云博客:Optimistic _ chen
✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐:

专栏内容特色适合人群
🔥C语言从入门到精通系统讲解基础语法、指针、内存管理、项目实战零基础新手、考研党、复习
🔥Java基础语法系统解释了基础语法、类与对象、继承Java初学者
🔥Java核心技术面向对象、集合框架、多线程、网络编程、新特性解析有一定语法基础的开发者
🔥Java EE 进阶实战Servlet、JSP、SpringBoot、MyBatis、项目案例拆解想快速入门Java Web开发的同学
🔥Java数据结构与算法图解数据结构、LeetCode刷题解析、大厂面试算法题面试备战、算法爱好者、计算机专业学生

🚀我的承诺:
✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客  #编程学习  #Java  #C语言  #算法  #程序员

Redis特性

Redis性能

官网介绍:
在这里插入图片描述
  从Redis官网的介绍可以看出,redis可以当作数据库来使用。那么它相比较于MySQL,有什么优势?或者说,弊端在哪里。

方面RedisRedisMySQL
类型内存存储键值对(数据结构服务器)关系型数据库管理系统
读写速度极快(内存操作)相对较慢(磁盘IO)
并发能力极强较强
数据持久化可选且异步强制且同步

总的来说:

  • redis速度极快、高并发、数据结构丰富、扩展简便;但是数据易失(有丢失风险)、不支持复杂查询、内存成本高
  • MySQL数据一致性和安全性高、生态成熟;但是扩展复杂、对简单数据结构不友好。

现代应用中,我们希望既要MySQL的 “大” 又要redis的 “快”,二者协同工作,最常用的就是redis作为MySQL的缓存层。
  根据具体需求来判断如何使用分配二者的权重,记住一点:Redis 是为了性能而生的缓存和高速数据处理器,MySQL 是为了可靠而生的核心数据保险库。

Redis结构

  几乎所有的高级语言提供了类似字典的功能,Java中的Map:一种基于键值对的数据结构的数据组织方式。而Redis也采用了键值对结构,它是基于键值对的数据结构服务器。但是Redis中的值不仅可以是字符串,也可以是其他具体的数据结构。

  Redis的全称是REmote Dictionary Server(远程字典服务),本质上和数据库很类似,它主要提供五种数据结构:

  • 字符串(String)
  • 哈希(Hash)
  • 列表(list)
  • 集合(set)
  • 有序集合(orderer set/zet)

相信只要学习过数据结构的程序员,对Redis的学习是非常高效的。

Redis功能

这里只是简单介绍一下具体有什么功能,其如何实现放在后面博客中详细解释,敬请期待。

  1. 提供键过期功能,可以用来实现缓存
  2. 提供了发布订阅功能,可以用来实现消息系统
  3. 提供Lua脚本功能,可以利用Lua创造出新的Redis命令
  4. 提供了简单的事务功能,能一定程度上保证事务特性
  5. 提供了流水线功能,这样客户端就能将一批命令一次性传递到Redis,减少网络开销。

Redis巨大优势

简单稳定

Redis简单体现在三个方面:

  • Redis源码很少,只有2w行左右,3.0版本后由于增加了集群功能,代码增至5w行左右,虽然看起来数字很大,但是程序员完全可以吃透。
  • Redis使用单线程模型,不仅使Redis服务端处理模型变得简单,也使客户端开发变得简单。
  • Redis不需要依赖操作系统中的库,Redis自己实现了事件处理的相关功能。
  • 因为Redis相对的简单,所以它具有相当的稳定性,大量的数据很少使Redis崩掉。

客户端语言多

  众所周知,网络传输需要通过各种协议,Redis 提供了简单的TCP通信协议,很多编程语言可以很方便的接入到Redis。后期博客我会着重介绍对Redis的客⼾端使⽤。

持久化

  一般情况下,数据存放在硬盘中是比较安全的,一旦发生断电或者死机等突发情况,保障数据不会丢失,所以内存中很少存放数据。但是内存的访问效率高,为了不浪费这个高效率,Redis提供了两种持久化方式:

  • RDB:采用定时快照方式,将某一时刻的内存数据以二进制格式写入磁盘。它文件紧凑、恢复速度快,适合备份与灾难恢复,但可能丢失最后一次快照后的数据。
  • AOF:记录每次写操作命令,以日志形式追加到文件末尾,重启时通过重放命令恢复数据,数据安全性更高,可配置 appendfsync 策略,但文件体积大、恢复速度较慢。

主从复制

Redis 提供了复制功能,实现了多个相同数据的Redis副本(Replica)复制功能是分布式Redis的基础。

在这里插入图片描述

高可用和分布式

  Redis 提供了⾼可⽤实现的Redis哨兵(Redis Sentinel),能够保证Redis结点的故障发现和故障⾃动转移。也提供了Redis集群(Redis Cluster),是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性

Redis应用

站在数据冷热的⻆度,数据分为热数据和冷数据,热数据通常是指需要频繁操作的数据,反之为冷数据。
  单纯站在数据冷热的⻆度上看,视频信息属于热数据,⽤⼾观看记录属于冷数据。如果将这些冷数据放在Redis上,基本上是对于内存的⼀种浪费,但是对于⼀些热数据可以放在Redis中加速读写,也可以减轻后端存储的负载,可以说是事半功倍

缓存(Cache)

  几乎所有大型网站都会采用缓存机制。合理运用缓存不仅能显著提升数据访问速度,还能有效减轻后端数据源的压力。Redis不仅支持键值过期时间设置,还提供了灵活的内存管理功能,包括最大内存限制和内存溢出时的淘汰策略。可以说,科学的缓存设计是确保网站稳定运行的重要保障。

排行榜系统

  排行榜系统几乎运用在所有大型网站,各种排行榜:按照时间排名,按照价格排名,按照各种维度计算出的排行榜等等。,Redis提供了列表和有序集合的结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。

计数器系统

  计数器在网站中至关重要,视频播放数,博文点赞数,文章浏览数等等,并且为了保证数据的实时性,每一次浏览都要进行+1操作,如果数据量很大,对于传统的关系型数据库性挑战很大。而Redis天然支持计数功能并且技术性能非常好,是计数器系统的重要选择。

消息队列系统

  消息队列系统是大型网站不可或缺的核心组件,它能有效实现业务解耦和流量削峰。虽然Redis的发布订阅和阻塞队列功能相比专业消息队列稍显简单,但完全能够满足常规的消息队列需求。

Redis版本

  Redis 借鉴了Linux操作系统对于版本号的命名规则:版本号第⼆位如果是奇数,则为⾮稳定版本(2.7),如果是偶数,则为稳定版本(2.6)

Redis 1.0(2009)

  • 标志性事件:初始版本发布,Redis诞生
  • 核心特性:支持简单的键值对存储
         基于内存、持久化到硬盘
         简单的主从复制

Redis 2.6 (2012)

核心特性:

  • Lua脚本:内置Lua脚本引擎,支持原子性的复杂操作,减少网络开销
  • 从站只读:明确将从库设置为只读模式,避免误操作
  • 超时命令:对BLPOP、BEPOP等阻塞命令添加了超时参数
  • 新的PTTL命令,返回键的剩余过期时间

Redis 2.8(2013)

核心特性:

  • Sentinel 哨兵机制:实现了可高用性解决方案,可以自动进行故障检测和故障转移
  • 部分重同步:在复制中断后,只需同步中断期间确实的数据,而不是全量同步,极大提升了复制的效率。
  • 键空间通知的增强
  • SCAN系列命令:提供了基于游标的迭代器,可以安全的遍历数据库中的键,替代了会阻塞服务的 KEYS 命令。

Redis 3.0(2015)

核心特性:

  • Redis Cluster集群:最重要的特征之一。实现了分布式、分片式的Redis解决方案,支持数据自动在多个节点间分片,并提供了一定程度的可用性。
  • 全新的Redis-benchmark压力测试工具。
  • 对Lua脚本的改进,支持了更细颗粒度的复制。

Redis 3.2(2016)

核心特性:

  • GEO地理空间索引:新增一系列GEO命令,可以存储和查询地理位置信息,支持计算距离、范围内搜索。
  • 字符串类型优化:引入了字符串编码优化,对短字符串的内存使用更加高效
  • Lua脚本调试功能
  • 新增BITFIELD命令,用于对位图进行原子性操作

Redis 4.0(2017)

核心特性:

  • Modules 模块系统:允许用户动态加载自定义模块来扩展Redis功能,这是 Redis 走向可扩展性的关键一步。
  • PSYNC2:优化了故障转移后的部分重同步机制
  • LFU缓存淘汰策略:新增了基于访问频率的淘汰算法,更加智能
  • 异步删除:UNLINK、FLUSHALL ASYNC 等命令可以非阻塞地删除大量键,避免服务停顿
  • 混合RDB+AOF持久化:结合了 RDB 的快照优势和 AOF 的实时性优势

Redis 5.0(2018)

核心特性:

  • Stream数据类型:新增了一个强大的、支持多播的持久化消息队列数据结构,是 Redis 作为消息中间件角色的重要完善。
  • Redis Cluster 代理:为集群模式提供了中心化的代理支持
  • 新的排序命令 SORT_RO(只读排序)
  • RDB文件格式升级:增加了存储效率。
  • 弃用了旧版的 redis-benchmark 等命令,推荐使用redis-cli的新参数

Redis 6.0(2020)

核心特性:

  • 多线程I/O:首次引入了多线程,用于处理网络I/O和命令解析,但命令本身还是单线程
  • ACL访问控制列表:提供了更精细化的权限控制,可以为不同客户端设置不同的用户名、密码、命令权限
  • SSL/TLS加密支持:增强了客户端和服务端通信安全性
  • 客户端缓存:支持了服务器辅助的客户端缓存功能(Client-side Caching),进一步降低延迟
  • RESP3协议:新的Redis序列化协议,为客户端提供了更丰富的数据类型

Redis 7.0(2022)

核心特性:

  • Redis Functions:使用Lua编写的函数,可以被持久化并在集群中自动复制,是取代脚本的更优解决方案
  • 多部分AOF持久化:将AOF文件拆分为基础文件和一个或者多个增量文件,使得重写更安全、更高效
  • Sharded Pub/Sub:为集群模式下的发布/订阅功能提供了分片支持
  • ACL规则的细颗粒度化:支持基于键模式的权限管理

Redis 7.2(2023)

核心特性:

  • 原生支持向量相似度搜索:通过FT.SEARCH命令和HNSW索引,无需额外模块即可进行向量相似度计算,是迈向 AI 时代的关键特性。
  • 对Triggers 和 Functions 的增强
  • 新增ZINTER ZUNION ZDIFF命令,用于直接存储复杂集合操作的结果
  • 更多的命令支持NX/XX 选项

从演进趋势可以看出,Redis 从一个简单的内存键值存储,逐步发展成为一个功能丰富、高可用、可扩展、安全且面向现代应用(如实时消息、AI向量搜索)的数据平台。
其核心演进方向是:性能、稳定性、分布式能力、安全性和功能扩展性。

完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~

✨ 想获取更多干货? 欢迎关注我的专栏 → optimistic_chen
📌 收藏本文,下次需要时不迷路!

我们下期再见!💫 持续更新中……


悄悄说:点击主页有更多精彩内容哦~ 😊
在这里插入图片描述

【Redis 系列】redis 学习,redis 的哨兵模式详解和实战 我们知道主从复制是这样搭建的 主机可以读,可以写 从机只能读,不能写 想一想,那么我们是不是也可以这样呢? 多个 redis-server 首尾相连 那么咱们部署的时候就是 6379 – 6380 – 6381 此时,若主机 6379 宕机掉,6380 会不会变成主机呢? 127.0.0.1:6379> info replication # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6 阅读详情

相关推荐

Unity URP管线下的Highlight Plus插件,从导入到实现物体高亮的保姆级避坑指南

本文详细解析了在Unity URP管线中使用Highlight Plus插件实现物体高亮的完整流程与常见问题解决方案。从URP环境配置、插件导入避坑到相机设置优化,提供了一套完整的保姆级指南,帮助开发者高效解决高亮效果不显示等典型问题,并包含移动端性能优化与复杂场景管理的高级技巧。

weixin_27379781的博客 408

redis详解系列

感觉这个博主写的redis详解系列非常nice 以此记录 https://www.cnblogs.com/ysocean/tag/Redis%E8%AF%A6%E8%A7%A3/

weixin_44844089的博客 134

ADS2023实战:2.4GHz超外差接收机从设计到链路预算全流程解析

本文以ADS 2023软件为平台,详细解析了2.4GHz超外差接收机从核心指标定义、架构原理到完整链路搭建与仿真的全流程。通过实战演练,重点阐述了如何利用ADS进行谐波平衡仿真和链路预算分析,以量化评估系统增益、噪声系数等关键性能,为射频工程师提供了一套从理论到仿真的系统级设计方法。

herb5的博客 817

Redis系列十:Pipeline详解

1、pipeline出现的背景: redis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果 这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题 2、pepeline的性能 ...

w1lgy的博客 10万+

3D医学影像分割新突破:手把手教你用MedSAM2快速标注CT/MRI数据(附3D Slicer插件配置)

本文详细介绍了如何利用MedSAM2模型进行3D医学影像分割,包括从环境准备到3D Slicer插件配置的全流程。通过实战案例和技巧分享,帮助医疗从业者快速掌握CT/MRI数据的高效标注方法,提升医学影像分析的准确性和效率。

ujm5678901的博客 299

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

redis配置详解-redis系列教程

动态配置 config get/set 配置名称 可以在redis-cli里面使用config命令来获取或设置redis配置,可以不用重新启动redis。 并不是所有的配置参数都可以通过config命令在运行期修改,比如:deamonize pidfile port database dir slaveof rename-command 等。 静态配置 参数配置在redis.conf文件中,你可

架构师修炼道路 1282

“傻瓜”stata入门——熟悉操作界面

小白开始学习stata和matlab,零基础上手

nnpersistent的博客 4456

Redis系列—redis.conf文件详解

Redis 3.2版本中,最重要的配置文件就是存在于安装目录中的名叫 redis.conf 的文件。其中的范本格式清楚说明了 Redis 3.2 版本中可以配置的主要信息和含义。主要包括几个方面:网络配置项、一般配置项、快照配置项、复制(高可用)配置项、集群配置项、安全配置项、资源限制配置项、LUA脚本配置、慢日志配置、监控配置、事件通知配置、数据结构高级配置等。 网络配置项和一般配置项  bind

此博客已停用,博文会逐渐转移到新地址,http://blog.youkuaiyun.com/liupeifeng3514 1036

Planet explorer:免费获取高分辨率影像的网站

该软件提供了高质量的卫星图像和地形数据,用户可以使用该软件来查看地球上任何地方的详细地图信息,包括地形、道路、建筑物等。在接下来的30天里,你可以点击应用顶部的切换按钮,在新的和当前的应用之间进行切换。如果在你感兴趣的地区没有高分辨率图像,可以通过我们的SkySat卫星为你采购。如果你还没有与我们的50厘米图像合作,请在这里下载我们的高分辨率图像样本,或联系销售,在你的合同中增加任务访问。你可以在 "我的订单 "中订购你的数据以供下载。你也可以点击双方按钮,将图像的足迹锁定在地图上,以获得更好的。

此星光明博客 1681

ChatGPT充值,银行卡被拒绝,图文教程

ChatGPT充值,银行卡被拒绝

weixin_46713695的博客 2万+

事务例子_Redis事务系列之一Redis事务详解

一、前言本章是redis事务系列知识第一章,redis事务系列主要讲解以下内容:redis 事务redis乐观锁讲解redis乐观锁实现秒杀我们一步一步来,本章主要讲解事务。二、事务2.1事务阐述讲redis事务之前,我们先来看看事务的定义。事务:一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。但redis的事务不并不是完整意义上的事务,我们称之为弱事务,为什么这么说呢?r...

weixin_42100032的博客 153

基于SVD矩阵分解的用户购物篮预测分析实战

基于SVD矩阵分解的用户购物篮预测分析实战

360

Redis系列之redis命令详解及其原理

目录 Redis redis应用场景 安装编译&&启动 redis 存储结构 Redis的五种数据结构 string string基础命令 string的存储结构 redis中string数据类型的应用 list list基础命令 list存储结构 list应用 hsah 基础命令 存储结构 应用 set 基础命令 存储结构 应用 zset 基础命令 存储结构 应用 Redis redis(Remote ...

qq_39329062的博客 413

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

技术架构系列 - 详解Redis

Redis 6.0之前,其网络I/O和命令执行是单线程的。其设计的核心目标是解决传统关系型数据库在高并发、低延迟场景下的性能瓶颈。Redis的卓越性能源于其精心设计的底层数据结构。,即解析请求和打包回复,而核心的命令执行逻辑仍然是单线程的,从而保持了串行化的无锁优势。:定期执行RDB作为基础备份,期间使用AOF记录增量操作,兼顾恢复速度和数据安全。跳跃表是有序集合(ZSET)的底层实现之一,提供高效的范围查询。字典是Redis的基石,用于实现数据库键空间(所有Redis键值对中的“值”都是一个。

qq_40668700的博客 1215

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java学习系列 redis详知详解

想详细学习一下redis系列的知识,特此记录。 通过以下整理 https://blog.youkuaiyun.com/Design407/article/details/103242874 https://zhuanlan.zhihu.com/p/89620471 https://blog.youkuaiyun.com/xiaozhegaa/article/details/80692017 1、redis是什么 Redi...

不想做咸鱼的咸鱼的专栏 855

Redis系列九、Redis运行文件详解

1、redis-cli 详解 ./redis-cli -r 3 -h 192.168.1.111 -a 12345678 ping //返回pong表示127.0.0.1:6379能通,r代表次数 ./redis-cli -r 100 -i 1 info |grep used_memory_human //i代表执行的时间间隔,每秒输出内存使用量,输100次 ./redis-cli -p 6379 -h 192.168.1.111 -a 12345678 对于我们来说,这些常用指令以

wr_java的博客 425

redis架构系列——哨兵模式详解

redis架构系列——哨兵模式详解

庄的博客 1784

面试系列 - Redis使用详解

Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它以键值对的形式存储数据,并提供了丰富的数据结构和操作,使其不仅可以用作缓存服务器,还可以用于消息队列、分布式锁、实时统计等各种用途。

境里婆娑 882

【深入解读Redis系列】Redis系列(五):切片集群详解

可以看到,由于负载均衡,Slot 2 中的数据已经从实例 2 迁移到了实例 3,但是,客户端缓存仍然记录着“Slot 2 在实例 2”的信息,所以会给实例 2 发送命令。实例 2 给客户端返回一条 MOVED 命令,把 Slot 2 的最新位置(也就是在实例 3 上),返回给客户端,客户端就会再次向实例 3 发送请求,同时还会更新本地缓存,把 Slot 2 与实例的对应关系更新过来。需要注意的是,在上图中,当客户端给实例 2 发送命令时,Slot 2 中的数据已经全部迁移到了实例 3。

程序员朱永胜 1020

redis架构系列——Cluster集群模式详解

redis cluster模式集群介绍

庄的博客 2474

【redis】scan系列命令详解

scan 常用于在大量redis key中寻找具有指定前缀的key(当然如果你一直使用图形工具可能不太了解它) 它是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程,初始游标为0。 SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。 如果新游标返回 0 表示迭代已结束,即不再又下一页的数据,如果

alwayszmj 4760

26、Redis 7系列:持久化详解

26、Redis 7系列:持久化详解

Eyesmoon的博客 522

1、Redis系列-Redis高性能原理详解

单线程架构:避免多线程复杂性和上下文切换开销。基于内存操作:提供了极高的读写速度。高效的I/O多路复用:使单线程也能处理大量并发请求。Reactor线程模型:通过事件驱动和非阻塞I/O提高I/O处理效率。简单高效的数据模型和命令:确保每个命令的执行效率。多种缓存淘汰策略:合理管理内存使用。优化的持久化机制:保证数据安全性且不影响性能。紧凑的数据编码:提高内存使用效率。轻量级通信协议:提升通信性能。主从复制与集群模式:实现高可用和高扩展性。

qq_29434541的博客 1433
上一篇: 【Linux 系列】Linux 命令/快捷键详解
下一篇: 【Redis 系列】深入理解Redis核心特性:全局命令、内部编码与单线程架构
Optimistic _ chen
博客等级 码龄3年 1553粉丝 127原创
评论 38
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Optimistic _ chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值