1. 程式人生 > >如何理解Redis叢集的Slot對映

如何理解Redis叢集的Slot對映

Redis在單機模式時,使用資料結構dict來實現資料庫。
Redis在叢集模式時,也是使用資料結構dict來實現資料庫,但是叢集模式對於資料庫有其他需求,包括資料的節點無關性、內部操作對客戶端需要遮蔽、冗餘備份等,並且在一定的情況,資料還需要在不同的節點間實現遷移。
在所有模式下,Redis的節點資料的備份都是使用備份來實現的。這個暫時不深入。

Redis引入的slot來解決如何實現叢集模式下部分需求的問題。
事實下,節點並不是儲存在slot裡面,slot只是用於管理資料與節點相聯的手段而已。在處理相關邏輯問題時,redis使用slot作為索引來管理資料下的所有資料。

舉一個例子,叢集模式下,使用redis-cli連線伺服器節點A(指派了slot

[2000-3000])並issue如下指令set name derekzhuo
-node A計算nameslot1000,發現slot 1000不在本節點上,向redis-cli返回該slot的節點資訊;
-redis-cli連線新的node,並且重新issue該指令。

以上流程就是cluster模式下如何處理一個鍵的流程,也可以很清楚地看出slot的作用其實就是用於做key索引而已。