Redis哨兵机制容易丢失数据,可以设置min-slaves-to-write(表示主从节点必须至少有一个从节点在进行正常复制,否则停止对外写服务,丧失可用性)和min-slaves-max-lag(单位秒,如果在指定时间内没有收到从节点反馈,意味着从节点同步不正常)。
Redis-cluster运行每个主节点有多个从节点,如果没有从节点,主节点发生故障会导致整个集群不可用,但是可以设置cluster-require-full-recovrgae允许部分节点发生故障,其他节点继续对外提供访问。网络抖动会导致主节点不可用,导致频繁主从切换,可以设置cluster-node-timeout允许某个节点的失联时间,当超过这个时间才认定节点故障,才会主从切换。节点失联会广播,只有所有节点收到该节点失联的次数达到集群的大多数,就确定该节点失联,并强迫其他节点接受该节点失联的事实,并进行主从切换。