如何理解Redis叢集的Slot對映
阿新 • • 發佈:2018-12-25
Redis在單機模式時,使用資料結構dict
來實現資料庫。
Redis在叢集模式時,也是使用資料結構dict
來實現資料庫,但是叢集模式對於資料庫有其他需求,包括資料的節點無關性、內部操作對客戶端需要遮蔽、冗餘備份等,並且在一定的情況,資料還需要在不同的節點間實現遷移。
在所有模式下,Redis的節點資料的備份都是使用備份
來實現的。這個暫時不深入。
Redis引入的slot
來解決如何實現叢集模式下部分需求的問題。
事實下,節點並不是儲存在slot
裡面,slot
只是用於管理資料與節點相聯的手段而已。在處理相關邏輯問題時,redis
使用slot
作為索引來管理資料下的所有資料。
舉一個例子,叢集模式下,使用redis-cli連線伺服器節點A(指派了slot
issue
如下指令set name derekzhuo
。 -
node A
計算name
的slot
為1000
,發現slot 1000
不在本節點上,向redis-cli
返回該slot
的節點資訊; -
redis-cli
連線新的node
,並且重新issue
該指令。
以上流程就是cluster
模式下如何處理一個鍵的流程,也可以很清楚地看出slot
的作用其實就是用於做key
索引而已。