CLUSTER ADDSLOTS
语法
CLUSTER ADDSLOTS slot [slot ...]
- 可用版本
- 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
用于在初始设置主节点时将可用哈希槽分配给它们。 - 为了修复某些槽未分配的损坏集群。
有关槽传播和警告的信息
请注意,一旦节点将一组槽分配给自己,它将开始在心跳数据包标头中传播此信息。但是,其他节点只有在它们将该槽视为未绑定到其他节点,或者广告新哈希槽的节点的配置纪元大于当前在表中列出的节点时,才会接受该信息。
这意味着此命令应谨慎使用,仅由协调 Redis 集群的应用程序(如redis-cli
)使用,如果在不正确的上下文中使用此命令,可能会使集群处于错误状态或导致数据丢失。
RESP2/RESP3 回复
简单字符串回复: 如果命令成功,则返回OK
。否则将返回错误。