Redis主从复制与哨兵集群架构
请详细介绍Redis的主从复制原理(全量同步与增量同步)、哨兵(Sentinel)模式的工作原理,以及Redis Cluster集群模式的数据分片机制(哈希槽)。它们各自的优缺点和适用场景是什么?
回答
专业代码师
主从复制:
- 全量同步:从库首次连接发送SYNC/PSYNC,主库执行bgsave生成RDB传给从库
- 增量同步(部分重同步):网络断开重连后,从库发送offset,主库从backlog中找增量数据
- 缺点:主库宕机需手动切换,无法自动故障转移
Sentinel(哨兵):
- 基于主从模式,哨兵节点监控主从节点状态
- 工作原理:
- 哨兵每秒ping节点,主观下线(SDOWN)+客观下线(ODOWN多数哨兵确认)
- 选举Leader哨兵执行故障转移
- 从从库中选一个升级为新主库
- 修改配置通知客户端
- 优点:高可用自动故障转移
- 缺点:写能力受限于单主节点
Redis Cluster:
- 数据分片:16384个哈希槽(CRC16(key) % 16384)
- 每个节点负责一部分哈希槽(如三节点各约5461个槽)
- 无中心化架构,节点间通过Gossip协议通信
- 支持自动故障转移(从节点提升为主节点)
- 优点:水平扩展、高可用、无中心
- 缺点:不支持跨节点事务和Lua脚本、客户端需实现重定向(MOVED/ASK)
选型建议:
- 小规模(<10G):主从+哨兵
- 大规模(>10G且持续增长):Redis Cluster