从单机到哨兵,一张图理清redis架构演进!
Redis 的架构是逐步演进而来的,正所谓“罗马不是一天建成的”。

2010 年:单机版 Redis
当 Redis
1.0在 2010 年首次发布时,整体架构非常简单,通常作为业务系统的缓存使用。不过,Redis 的数据是存储在内存中的,一旦重启,数据就会全部丢失,导致请求会直接打到数据库上,带来较大的压力。
2013 年:持久化机制上线
2013 年,Redis
2.8版本发布,解决了之前“重启就丢数据”的问题。Redis 引入了 RDB(内存快照)机制,用于定时将内存中的数据持久化到磁盘。同时还支持 AOF(只追加文件)方式,将每一次写操作都记录到日志文件中,实现更高级别的持久化保障。
2013 年:主从复制机制
同样在 Redis
2.8中,官方引入了主从复制功能,提升了系统的高可用性。主节点负责处理实时的读写请求,从节点则负责同步主节点的数据,起到备份和读扩展的作用。
2013 年:Sentinel 哨兵机制上线
在 Redis
2.8版本中,引入了 Sentinel(哨兵)机制,用于实时监控 Redis 实例的运行状态。它主要负责以下几个方面的工作:
- 监控 Redis 实例是否正常运行
- 在发生故障时发出告警通知
- 发生故障时自动完成主从切换(故障转移)
2015 年:集群模式上线
2015 年,Redis 发布了3.0版本,正式引入了 Redis Cluster(集群)功能。Redis 集群是一种分布式数据库解决方案,它通过“分片”机制管理数据。整个数据空间被划分为 16384 个槽(slot),每个节点负责其中一部分槽的数据。这样不仅提高了系统的可扩展性,还提升了整体的性能与容错能力。
2017 年:Stream 数据类型
到了 2017 年,Redis 发布了
5.0版本,新增了Stream 数据类型,进一步拓展了 Redis 在实时消息处理等场景下的应用能力。
2020 年:多线程
2020 年,Redis 发布了
6.0版本,引入了网络模块的多线程 I/O 机制。Redis 的整体架构可以分为两个模块:网络模块和主处理模块。随着业务量的增长,开发者们发现网络模块开始逐渐成为系统的性能瓶颈。因此,在 6.0 版本中,对网络 I/O 进行了多线程优化,从而提升了高并发场景下的网络处理能力。