哨兵机制:
(1)监控:有一个哨兵集群,这个哨兵集群检测redis的主从集群。它是每隔1秒钟就向主从集群中的节点发送心跳,如果节点没有回复,则这个哨兵就主观的认为这个节点发生故障,这时候其他的哨兵也就向这个节点发送心跳,当有一半的哨兵主观的认为节点故障,那么就客观的认为这个节点不能工作了,发生故障。
(2)恢复:当有一个节点故障之后,如果这个节点是从节点则使它重启恢复就行。如果是主节点故障之后,那么哨兵就会从从节点中选一个来当主接主节点,判断的依据有很多,主要是看offset是否是最大的最接近故障的offset的值。选出来之后,就会执行slaveof no one,使这个从节点变为主节点,同时向存活的从节点发生信息,告知从节点,主节点发生变化。同时使原来的主节点恢复之后变为从节点。
(3)通知:当主节点发生改变,那么就会通过客户端(redisTemplate)主节点发生改变。