為了解決主從模式可用性不高的問題,哨兵模式出現了。哨兵模式是在主從模式的基礎上增加壹個哨兵集群。每個哨兵監控主節點和從節點的狀態。如果主節點掛機,將選擇其中壹個從節點作為主節點,達到高可用的目的。(即使用自動選舉機制)
哨兵集群中的每個節點將啟動三個計時任務。
如果實例與PING命令的最後壹次有效回復之間的時間超過了down-after-milles seconds指定的值,那麽Sentinel會將該實例標記為主觀脫機。
如果主服務器被標記為主觀脫機,所有監視主服務器的Sentinel節點應該每秒壹次確認主服務器是否真的進入了主觀脫機狀態。
如果主服務器被標記為主觀脫機,並且在指定的時間範圍內有足夠數量的Sentinel(至少是配置文件中指定的數量)同意這壹判斷,則該主服務器被標記為客觀脫機。
Sentinel模式解決了故障無法自動恢復的問題,但仍然存在問題:Redis難以支持在線擴展,對於集群來說,當容量達到上限時,在線擴展會變得非常復雜。
Redis集群采用虛擬槽分區,所有鍵按照哈希函數映射到0~16383槽,每個Redis節點維護壹些槽和槽中的數據。