Redis集群中的雜湊槽

2021-08-28 15:13:18 字數 612 閱讀 7973

關係:cluster>node>slot>key

redis 集群中內建了 2^14=16384 個雜湊槽,當需要在 redis 集群中放置乙個 key-value時,redis 先對 key 使用 crc16 演算法算出乙個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應乙個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點。

可以理解成表的分割槽,使用單節點時的redis時只有乙個表,所有的key都放在這個表裡;改用redis cluster以後會自動為你生成16384個分割槽表,你insert資料時會根據上面的簡單演算法來決定你的key應該存在哪個分割槽,每個分割槽裡有很多key。

"用了雜湊槽的概念,而沒有用一致性雜湊演算法,不都是雜湊麼?這樣做的原因是為什麼呢?"

redis cluster是自己做的crc16的簡單hash演算法,沒有用一致性hash。redis的作者認為它的crc16(key) mod 16384的效果已經不錯了,雖然沒有一致性hash靈活,但實現很簡單,節點增刪時處理起來也很方便。

redis集群之雜湊槽

clusterlink結構儲存了連線節點所需要的資訊,比如套接字描述符,輸入快取區和輸出緩衝區,主要是用於連線其他節點。每個節點都儲存著乙個clusterstate結構。這個結構記錄了在當前結點的視角下,集群的狀態,集群所包含的節點等資訊 redis 集群通過分片的方式儲存資料庫中的鍵值對 集群的整...

redis 集群雜湊槽的概念

redis 集群中內建了16384個雜湊槽,當需要在 redis 集群中放置乙個 key value時,redis 先對 key 使用 crc16 演算法算出乙個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應乙個編號在 0 16383 之間的雜湊槽,redis 會根據節點數量大致...

Redis 雜湊槽概念

redis 集群中內建了 16384 個雜湊槽,當需要在 redis 集群中放置乙個 key value時,redis 先對 key 使用 crc16 演算法算出乙個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應乙個編號在 0 16383 之間的雜湊槽,redis 會根據節點數量...