主從:
包括一個master節點 和多個slave節點:
master節點負責數據的讀寫,slave節點負責數據的讀取,master節點收到數據變更,會同步到slave節點
去實現數據的同步。通過這樣一個架構可以去實現redis的一個讀寫分離。提升數據的查詢效率。但是redis主從集群不提供容錯和恢復的功能,一旦master節點掛了,不會自動選取出新的master節點,導致后續的客戶
端所有的寫請求失敗。所以redis提供了哨兵機制:專門用來監聽redis主從集群提供故障的自動恢復能力,哨兵會監控redis主從節點的一個狀態。當master節點出現的故障的時候,會自動從剩下的slaver中選舉出一個新的master,哨兵模式下雖然解決了master選舉的一個問題,但是在線擴容的問題還是沒有解決。于是就有了第三種集群方式:redis Cluster:
它實現了redis的分布式存儲,也就是每個節點存儲不同的數據。實現數據的分片功能。在redis cluster里面引入了slot槽,來實現數據分片。slot的整體取值范圍是0-16383,每個節點會分配一個slot區間,當我們存取key的時候。redis會根據key去計算,得到一個slot的值。然后找到對應的節點進行數據的讀寫。會自動選舉。但是客戶端實現比較復雜。slave只是一個冷備節點不提供分擔讀寫壓力。對redis的批量操作指令有限制。
高手回答:
redis主從:
1、基于主從復制來實現,所以它可以實現讀寫分離,分擔redis讀操作的一個壓力
2、redis Cluster集群里面的slave節點只是實現冷備的一個機制,它只有在master宕機之后才會工作。
3、redis哨兵集群無法在線擴容。它的并發壓力受限于單個服務器資源的一個配置,redis cluster提供了基于slot槽的一個數據分片的一個機制。它可以實現在線擴容。去提高讀寫性能。
?