Redis 常见的集群架构
以下是 Redis 常见的集群架构及其核心模式详解,结合其设计原理、适用场景和优缺点进行综合说明:
一、主从复制模式
架构原理
- 角色划分:包含一个主节点(Master)和多个从节点(Slave)。主节点处理所有写操作,从节点通过异步复制同步主节点数据,仅支持读操作。
- 数据同步:首次连接时从节点触发全量同步(RDB快照),后续通过增量命令(AOF)保持数据一致性。
- 手动故障恢复:主节点宕机时需人工干预将从节点提升为新主节点。
优缺点
- 优点:读写分离提升读性能;部署简单,适合小规模场景。
- 缺点:无自动故障转移;数据量受单机内存限制;主节点宕机导致写服务中断。
适用场景:数据备份、读请求远多于写的场景(如缓存系统)。
架构图 :
二、哨兵模式(Sentinel)
架构原理
- 哨兵集群:由多个哨兵节点组成,监控主从节点状态,通过 Raft 算法选举 Leader 哨兵主导故障转移。
- 自动故障切换:主节点客观下线后,根据优先级、复制偏移量等规则选举新主节点,并通知客户端更新配置。
- 弱一致性:数据同步异步进行,故障转移期间可能出现短暂数据不一致。
优缺点
- 优点:高可用性,自动容错;支持读写分离。
- 缺点:数据存储未分片,内存和写入性能受单节点限制;需额外维护哨兵集群。
适用场景:中小规模系统,需高可用但无需分片的场景(如核心业务缓存)。
架构图 :

三、Cluster 模式(官方分布式方案)
架构原理
- 数据分片:通过哈希槽(16384个槽位)将数据分布到多个主节点,客户端请求由节点自动路由。
- 多主多从:每个主节点对应一至多个从节点,支持自动故障转移。默认情况下 从节点只是做为热备节点,不参与读。从而保证数据一致性
- 去中心化:节点间通过 Gossip 协议通信,无需依赖外部代理。
优缺点
- 优点:支持横向扩展;高可用性与高性能结合;数据分散存储突破单机内存限制。
- 缺点:不支持跨节点事务和多键操作(如 MGET);配置复杂度较高。
适用场景:大规模数据存储和高并发场景(如电商库存系统)。
架构图:
四、 代理模式 (第三方扩展方案)
1. Codis
-
架构:通过代理层(Codis-Proxy)实现数据分片,依赖 ZooKeeper 管理元数据。
-
特点:支持平滑扩容;兼容 Redis 协议,客户端无感知。
-
缺点:需修改 Redis 源码(codis-server);依赖外部组件(如 ZooKeeper)。
-
架构图 :
2. Twemproxy
- 架构:轻量级代理,支持多 Redis 实例分片和负载均衡。
- 特点:部署简单;性能损失约 20%。
- 缺点:代理层单点故障;不支持动态扩缩容。
适用场景:需快速实现分片但暂不迁移至 Cluster 的过渡方案。
五、模式对比与选型建议
模式 | 数据分片 | 自动容错 | 扩展性 | 适用规模 |
---|---|---|---|---|
主从复制 | ❌ | ❌ | 低(垂直扩展) | 小数据量、低并发 |
哨兵模式 | ❌ | ✅ | 中(主从复制) | 中小规模高可用场景 |
Cluster 模式 | ✅ | ✅ | 高(水平扩展) | 海量数据、高并发 |
Codis/Twemproxy | ✅(代理层) | ❌ | 中(依赖代理配置) | 过渡或特定分片需求 |
选型建议:
- 优先选择 Redis Cluster:适用于大规模分布式场景,兼顾分片与高可用。
- 慎用主从/哨兵模式:仅适合数据量小且无分片需求的场景。
- 代理模式的妥协:在无法升级到 Cluster 时选择,但需权衡运维成本。