天天看點

redis的CLUSTER ADDSLOTS指令

redis的CLUSTER ADDSLOTS指令

這個指令是用來建立叢集的

redis群集有16384個時隙位,使用CLUSTER MEET指令建構群集時未配置設定時隙位。 可以通過發送CLUSTER ADDSLOTS指令将時隙位配置設定給目前節點

資料結構

  群集節點的slots屬性用于記錄節點負責哪個槽位。 slots是一個二進制位數組,如果數組索引的二進制位值為1,則表示目前節點負責此插槽,否則不負責插槽。 numslots屬性存儲節點負責的槽位數,這兩個屬性記錄目前節點負責的槽位,并由目前節點通過消息發送到群集中的其他節點。 收到slots數組的節點将數組資訊儲存在相應節點的clusterNode結構中。

  此外,clusterState結構的slots數組也儲存了插槽的配置設定情況。 slots數組有16384個元素,指向元素的指針為空,訓示未配置設定時隙位,而指向一個群集節點結構的指針訓示已配置設定給該時隙位所在的節點。

  為什麼插槽配置設定的資訊會儲存在叢集節點的slots數組中,也儲存在叢集狀态的slots數組中?

  由于叢集節點記錄了插槽的配置設定,但沒有記錄插槽具體配置設定給哪個節點,是以請周遊叢集狀态的nodes詞典的叢集節點結構,檢視slots數組

CLUSTER ADDSLOTS的使用

  CLUSTER ADDSLOTS指令來完成指令将槽位指定給節點,将叢集狀态的slots數組中槽位的索引指向目前節點的clusterNode結構,并指定叢集節點的slots數組

redis就是通過CLUSTER ADDSLOTS指令來完成槽位的配置設定的

> CLUSTER ADDSLOTS 1 2 3
OK
           

總結