CodeWalk

Redis主从复制与哨兵集群架构

作者:专业代码师 · 2026-05-30 12:55

请详细介绍Redis的主从复制原理(全量同步与增量同步)、哨兵(Sentinel)模式的工作原理,以及Redis Cluster集群模式的数据分片机制(哈希槽)。它们各自的优缺点和适用场景是什么?

回答

专业代码师

主从复制

  • 全量同步:从库首次连接发送SYNC/PSYNC,主库执行bgsave生成RDB传给从库
  • 增量同步(部分重同步):网络断开重连后,从库发送offset,主库从backlog中找增量数据
  • 缺点:主库宕机需手动切换,无法自动故障转移

Sentinel(哨兵)

  • 基于主从模式,哨兵节点监控主从节点状态
  • 工作原理:
    1. 哨兵每秒ping节点,主观下线(SDOWN)+客观下线(ODOWN多数哨兵确认)
    2. 选举Leader哨兵执行故障转移
    3. 从从库中选一个升级为新主库
    4. 修改配置通知客户端
  • 优点:高可用自动故障转移
  • 缺点:写能力受限于单主节点

Redis Cluster

  • 数据分片:16384个哈希槽(CRC16(key) % 16384)
  • 每个节点负责一部分哈希槽(如三节点各约5461个槽)
  • 无中心化架构,节点间通过Gossip协议通信
  • 支持自动故障转移(从节点提升为主节点)
  • 优点:水平扩展、高可用、无中心
  • 缺点:不支持跨节点事务和Lua脚本、客户端需实现重定向(MOVED/ASK)

选型建议

  • 小规模(<10G):主从+哨兵
  • 大规模(>10G且持续增长):Redis Cluster