CLUSTER ADDSLOTS
语法
CLUSTER ADDSLOTS slot [slot ...]
- 可用版本
- Redis Open Source 3.0.0
- 时间复杂度
- O(N),其中 N 是哈希槽参数的总数
- ACL 分类
-
@admin
,@slow
,@dangerous
,
此命令用于修改节点对集群配置的视图。具体来说,它将一组哈希槽分配给接收命令的节点。如果命令成功,节点将指定的哈希槽映射到自身,并开始广播新的配置。
但请注意:
- 此命令仅在接收命令的节点看来,所有指定的槽当前未被分配时才有效。节点将拒绝接管已属于其他节点(包括其自身)的槽。
- 如果指定了相同的槽多次,命令将失败。
- 作为命令执行的副作用,如果参数中指定的槽之一被设置为
importing
状态,一旦节点将该(先前未绑定的)槽分配给自身,此状态将被清除。
示例
例如,以下命令将槽 1 2 3 分配给接收命令的节点
> CLUSTER ADDSLOTS 1 2 3
OK
但是,如果再次尝试执行此命令,将因槽已被分配而导致错误
> CLUSTER ADDSLOTS 1 2 3
ERR Slot 1 is already busy
在 Redis 集群中的用法
此命令仅在集群模式下有效,可用于以下 Redis 集群操作:
- 为了创建一个新的集群,使用
CLUSTER ADDSLOTS
命令初步设置主节点,并在它们之间分配可用的哈希槽。 - 为了修复某些槽未被分配的损坏集群。
关于槽传播的信息和警告
请注意,一旦节点将一组槽分配给自身,它将开始在心跳包头中传播此信息。但是,其他节点仅在它们看来该槽尚未与另一个节点绑定,或者如果通告新哈希槽的节点的配置纪元(configuration epoch)大于表中当前列出的节点时,才会接受此信息。
这意味着此命令应仅由协调 Redis 集群的应用程序小心使用,例如 redis-cli
。如果在不正确的上下文中使用此命令,可能会使集群处于错误状态或导致数据丢失。
RESP2/RESP3 回复
简单字符串回复:如果命令成功则返回OK
。否则返回错误。