一、槽介绍
- Redis集群通过分片的方式来保存数据库中的键值对:集群的整个数据库被分为16384个槽(slot),数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点可以处理0个或最多16384个槽
二、集群的上线、下线状态
- 当数据库中的16384个槽都有节点在处理时,集群处于上线状态(ok);相反地,如果数据库中有任何一个槽没有得到处理,那么集群处于下线状态(fail)
- 例如,在前面的文章中(https://blog.csdn.net/qq_41453285/article/details/103355618)我们使用CLUSTER MEET命令将7000、7001、7002三个节点连接到了同一个 集群里面,不过这个集群目前仍然处于下线状态,因为集群中的三个节点都没有在处理任何 槽:
三、槽分配(CLUSTER ADDSLOTS命令)
- 通过向节点发送CLUSTER ADDSLOTS命令,我们可以将一个或多个槽指派(assign)给节点负责:
CLUSTER ADDSLOTS <slot> [slot ...]
演示案例
- 举个例子,执行以下命令可以将槽0至槽5000指派给节点7000负责:
- 为了让7000、7001、7002三个节点所在的集群进入上线状态,我们继续执行以下命令, 将槽5001至槽10000指派给节点7001负责:
- 然后将槽10001至槽16383指派给7002负责:
- 当以上三个CLUSTER ADDSLOTS命令都执行完毕之后,数据库中的16384个槽都已经被 指派给了相应的节点,集群进入上线状态: