您好,登錄后才能下訂單哦!
redis-cluster集群是什么?相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,話不多說,一起往下看吧。
不同于master-salve 或者 哨兵模式 cluster與他們最大的區別就是 前兩種是全量存儲 內存消耗大,且存在木桶效應而 cluster集群則是分布式存儲 即每臺Redis存儲不同的內容。
redis-cluster被設計為一共有16384個hash slot可用,每個master分得一部分的slot 其分布算法為:【hash_slot = crc16(key) mod 16384】 如果有{}則取{}的可用key,否則整個可以是可用key。集群至少要3主3從,且每個實例使用不同的配置文件。
所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬。
節點的fail是通過集群中超過半數的節點檢測失效時才生效。
客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集群所有節點,連接集群中任何一個可用節點即可。
redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
redis-cluster投票:容錯
1、投票過程是集群中所有master參與,如果半數以上master節點與master節點通信超時(cluster-node-timeout),認為當前master節點掛掉.
2、什么時候整個集群不可用(cluster_state:fail)?
如果集群任意master掛掉,且當前master沒有slave.集群進入fail狀態,也可以理解成集群的slot映射[0-16383]不完整時進入fail狀態.
redis-3.0.0.rc1加入cluster-require-full-coverage參數,默認關閉,打開集群兼容部分失敗.
如果集群超過半數以上master掛掉,無論是否有slave,集群進入fail狀態。
在redis-cluster架構中,redis-master節點一般用于接收讀寫,而redis-slave節點則一般只用于備份,其與對應的master擁有相同的slot集合,若某個redis-master意外失效,則再將其對應的slave進行升級為臨時redis-master。
在redis的官方文檔中,對redis-cluster架構上,有這樣的說明:在cluster架構下,默認的,一般redis-master用于接收讀寫,而redis-slave則用于備份,當有請求是在向slave發起時,會直接重定向到對應key所在的master來處理。
但如果不介意讀取的是redis-cluster中有可能過期的數據并且對寫請求不感興趣時,則亦可通過readonly命令,將slave設置成可讀,然后通過slave獲取相關的key,達到讀寫分離。
看完上述內容,你們對redis-cluster集群大概了解了嗎?如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。