redis集羣一致性哈希--哈希槽

Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value

時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,

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

致均等的將哈希槽映射到不同的節點。


Redis 集羣沒有使用一致性hash, 而是引入了哈希槽的概念。

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

使用哈希槽的好處就在於可以方便的添加或移除節點。

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

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章