1. 程式人生 > >redis如何分配雜湊槽

redis如何分配雜湊槽

Redis 叢集中內建了 16384 個雜湊槽,當需要在 Redis 叢集中放置一個 key-value

時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 取模,

這樣每個 key 都會對應一個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大

致均等的將雜湊槽對映到不同的節點。

Redis 叢集沒有使用一致性hash, 而是引入了雜湊槽的概念。

Redis 叢集有16384個雜湊槽,每個key通過CRC16校驗後對16384取模來決定放置哪個槽.叢集的每個節點負責一部分hash槽。這種結構很容易新增或者刪除節點,並且無論是新增刪除或者修改某一個節點,都不會造成叢集不可用的狀態。

使用雜湊槽的好處就在於可以方便的新增或移除節點。

當需要增加節點時,只需要把其他節點的某些雜湊槽挪到新節點就可以了;

當需要移除節點時,只需要把移除節點上的雜湊槽挪到其他節點就行了;

在這一點上,我們以後新增或移除節點的時候不用先停掉所有的 redis 服務。