您好,登錄后才能下訂單哦!
Redis
集群是一個可以在多個 Redis
節點之間進行數據共享的設施installation
。
Redis
集群不支持那些需要同時處理多個鍵的 Redis
命令, 因為執行這些命令需要在多個 Redis
節點之間移動數據, 并且在高負載的情況下, 這些命令將降低Redis
集群的性能, 并導致不可預測的行為。
Redis
集群通過分區partition
來提供一定程度的可用性availability
: 即使集群中有一部分節點失效或者無法進行通訊, 集群也可以繼續處理命令請求。
Redis
集群提供了以下兩個好處:
將數據自動切分split
到多個節點的能力。
當集群中的一部分節點失效或者無法進行通訊時, 仍然可以繼續處理命令請求的能力。
所有的redis
節點彼此互聯(PING
-PONG
機制),內部使用二進制協議優化傳輸速度和帶寬。
節點的fail
是通過集群中超過半數的節點檢測失效時才生效。
客戶端與redis
節點直連,不需要中間proxy
層.客戶端不需要連接集群所有節點,連接集群中任何一個可用節點即可。
redis-cluster
把所有的物理節點映射到[0-16383
]slot
上,cluster
負責維護node
<->slot
<->value
Redis
集群中內置了 16384
個哈希槽,當需要在 Redis
集群中放置一個 key-value
時,redis
先對key
使用 crc16
算法算出一個結果,然后把結果對 16384
求余數,這樣每個 key
都會對應一個編號在 0-16383
之間的哈希槽,redis
會根據節點數量大致均等的將哈希槽映射到不同的節點
投票過程是集群中所有master
參與,如果半數以上master
節點與master
節點通信超時(cluster-node-timeout
),認為當前master
節點掛掉.
什么時候整個集群不可用(cluster_state:fail
)?
redis-3.0.0.rc1
加入cluster-require-full-coverage
參數,默認關閉,打開集群兼容部分失敗.
如果集群任意master
掛掉,且當前master
沒有slave
.集群進入fail
狀態,也可以理解成集群的slot
映射[0-16383
]不完整時進入fail狀態.
如果集群超過半數以上master
掛掉,無論是否有slave
,集群進入fail
狀態.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。