
🚀 欢迎来到我的CSDN博客:Optimistic _ chen
✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!
🚀我的专栏推荐:
| 专栏 | 内容特色 | 适合人群 |
|---|---|---|
| 🔥C语言从入门到精通 | 系统讲解基础语法、指针、内存管理、项目实战 | 零基础新手、考研党、复习 |
| 🔥Java基础语法 | 系统解释了基础语法、类与对象、继承 | Java初学者 |
| 🔥Java核心技术 | 面向对象、集合框架、多线程、网络编程、新特性解析 | 有一定语法基础的开发者 |
| 🔥Java EE 进阶实战 | Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 | 想快速入门Java Web开发的同学 |
| 🔥Java数据结构与算法 | 图解数据结构、LeetCode刷题解析、大厂面试算法题 | 面试备战、算法爱好者、计算机专业学生 |
🚀我的承诺:
✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例
✅ 持续更新:专栏内容定期更新,紧跟技术趋势
✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)
🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨
📌 标签:#技术博客 #编程学习 #Java #C语言 #算法 #程序员
文章目录
- Redis特性
- Redis应用
- Redis版本
-
- [Redis 1.0(2009)](#Redis 1.0(2009))
- [Redis 2.6 (2012)](#Redis 2.6 (2012))
- [Redis 2.8(2013)](#Redis 2.8(2013))
- [Redis 3.0(2015)](#Redis 3.0(2015))
- [Redis 3.2(2016)](#Redis 3.2(2016))
- [Redis 4.0(2017)](#Redis 4.0(2017))
- [Redis 5.0(2018)](#Redis 5.0(2018))
- [Redis 6.0(2020)](#Redis 6.0(2020))
- [Redis 7.0(2022)](#Redis 7.0(2022))
- [Redis 7.2(2023)](#Redis 7.2(2023))
- 完结撒花!🎉
Redis特性
Redis性能
官网介绍:

从Redis官网的介绍可以看出,redis可以当作数据库来使用。那么它相比较于MySQL,有什么优势?或者说,弊端在哪里。
| 方面 | Redis | RedisMySQL |
|---|---|---|
| 类型 | 内存存储键值对(数据结构服务器) | 关系型数据库管理系统 |
| 读写速度 | 极快(内存操作) | 相对较慢(磁盘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功能
这里只是简单介绍一下具体有什么功能,其如何实现放在后面博客中详细解释,敬请期待。
- 提供键过期功能,可以用来实现缓存
- 提供了发布订阅功能,可以用来实现消息系统
- 提供Lua脚本功能,可以利用Lua创造出新的Redis命令
- 提供了简单的事务功能,能一定程度上保证事务特性
- 提供了流水线功能,这样客户端就能将一批命令一次性传递到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的增强 - 新增
ZINTERZUNIONZDIFF命令,用于直接存储复杂集合操作的结果 - 更多的命令支持
NX/XX选项
从演进趋势可以看出,Redis 从一个简单的内存键值存储,逐步发展成为一个功能丰富、高可用、可扩展、安全且面向现代应用(如实时消息、AI向量搜索)的数据平台。
其核心演进方向是:性能、稳定性、分布式能力、安全性和功能扩展性。
完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~
✨ 想获取更多干货? 欢迎关注我的专栏 → optimistic_chen
📌 收藏本文,下次需要时不迷路!
我们下期再见!💫 持续更新中......
悄悄说:点击主页有更多精彩内容哦~ 😊
