redis雜湊槽
從redis 3.0之後版本支援redis-cluster叢集,Redis-Cluster採用無中心結構,每個節點儲存資料和整個叢集狀態,每個節點都和其他所有節點連線。
結構特點:
1、所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸速度和頻寬。
2、節點的fail是通過叢集中超過半數的節點檢測失效時才生效。
3、客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連線叢集所有節點,連線叢集中任何一個可用節點即可。
4、redis-cluster把所有的物理節點對映到[0-16383]slot上(不一定是平均分配),cluster 負責維護node<->slot<->value。
5、Redis叢集預分好16384個桶,當需要在 Redis 叢集中放置一個 key-value 時,根據 CRC16(key) mod 16384的值,決定將一個key放到哪個桶中。
Redis 叢集沒有使用一致性hash, 而是引入了雜湊槽的概念。
Redis 叢集有16384個雜湊槽,每個key通過CRC16校驗後對16384取模來決定放置哪個槽.叢集的每個節點負責一部分hash槽。這種結構很容易新增或者刪除節點,並且無論是新增刪除或者修改某一個節點,都不會造成叢集不可用的狀態。
使用雜湊槽的好處就在於可以方便的新增或移除節點。
當需要增加節點時,只需要把其他節點的某些雜湊槽挪到新節點就可以了;
當需要移除節點時,只需要把移除節點上的雜湊槽挪到其他節點就行了;
在這一點上,我們以後新增或移除節點的時候不用先停掉所有的 redis 服務。
---------------------
作者:makemeasmile
來源:CSDN
原文:https://blog.csdn.net/makemeasmile/article/details/53192658
版權宣告:本文為博主原創文章,轉載請附上博文連結!