2026-06-25 03:22:08
Redis哨兵(Sentinel)的核心原理是通过集群监控、故障判断、选主与故障转移等机制,实现Redis主从集群的自动故障恢复和高可用性。其工作原理可分为以下四个关键部分:
1. 集群监控机制哨兵通过心跳检测实时监控Redis实例状态:
当主节点客观下线后,哨兵需从从节点中选举新主节点,步骤如下:
排除与主节点断开连接超过down-after-milliseconds * 10的从节点(避免数据过旧)。
优先选择slave-priority值较小的从节点(值越小优先级越高,若为0则不参与选举)。
若优先级相同,选择复制偏移量(offset)更大的从节点(数据更新)。
若offset相同,选择运行ID(runid)较小的从节点(确保唯一性)。
哨兵向选定的从节点发送SLAVEOF NO ONE命令,使其升级为新主节点。
向其他从节点发送SLAVEOF <新主节点IP> <端口>命令,使其成为新主节点的从节点。
将原主节点标记为从节点,待其恢复后自动同步新主节点的数据。
为避免多个哨兵同时发起故障转移,需选举一个Leader Sentinel统筹操作:
哨兵在故障转移后需同步集群状态:
总结:Redis哨兵通过心跳检测、主观/客观下线判断、选主算法和Leader选举机制,实现了自动化故障恢复和集群监控。其设计基于Raft算法和PUB/SUB通信,确保了高可用性和数据一致性,适用于需要低延迟、高可靠的Redis部署场景。