天天看点

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
           

总结