cluster addslots建立集群
cluster addslots建立集群
redis群集有16384个时隙位,使用CLUSTER MEET命令构建群集时未分配时隙位。 可以通过发送CLUSTER ADDSLOTS命令将时隙位分配给当前节点集群节点的slots属性用于记录节点负责哪个槽位。
数据结构
slots是一个二进制位数组,如果数组索引的二进制位值为1,则表示当前节点负责此插槽,否则不负责插槽。 numslots属性存储节点负责的槽位数,这两个属性记录当前节点负责的槽位,并由当前节点通过消息发送到群集中的其他节点。 收到slots数组的节点将数组信息保存在相应节点的clusterNode结构中。
此外,clusterState结构的slots数组也保存了插槽的分配情况。 slots数组有16384个元素,指向元素的指针为空,指示未分配时隙位,而指向一个群集节点结构的指针指示已分配给该时隙位所在的节点。
为什么插槽分配的信息会保存在集群节点的slots数组中,也保存在集群状态的slots数组中?
由于集群节点记录了插槽的分配,但没有记录插槽具体分配给哪个节点,因此请遍历集群状态的nodes词典的集群节点结构,查看slots数组
命令使用
CLUSTER ADDSLOTS命令来完成命令将槽位指定给节点,将集群状态的slots数组中槽位的索引指向当前节点的clusterNode结构,并指定集群节点的slots数组
redis就是通过CLUSTER ADDSLOTS命令来完成槽位的分配的
> CLUSTER ADDSLOTS 1 2 3
OK
这就是通过CLUSTER ADDSLOTS命令来对槽位进行分配,将1 2 3三个槽分配给收到这个命令的服务器。
当槽位被划分好后再进行分配就会报错,就像上边的命令,如果执行成功了再执行一次就会出现错误。
总结
好了,今天cluster addslots命令写分析到这里,如果哪里写的不对还请多多指教。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
- 点赞
- 收藏
- 关注作者
评论(0)