CLUSTER ADDSLOTS

用法
CLUSTER ADDSLOTS slot [ slot ... ]
复杂度
O(N),其中 N 是哈希槽参数的总数
始于
3.0.0
ACL 类别
@admin, @dangerous, @slow

此命令用于修改节点对集群配置的视图。具体来说,它将一组哈希槽分配给接收命令的节点。如果命令成功,节点会将指定的哈希槽映射给自己,并开始广播新的配置。

但请注意

  1. 该命令仅在从接收命令的节点来看,所有指定的槽当前都未被分配时才有效。节点将拒绝接管已属于其他节点(包括其自身)的槽。
  2. 如果指定了多次相同的槽,命令将失败。
  3. 作为命令执行的副作用,如果参数中指定的某个槽被设置为 importing(导入中),一旦节点将该(先前未绑定的)槽分配给自己,此状态就会被清除。

示例

例如,以下命令将槽 1、2、3 分配给接收命令的节点

> CLUSTER ADDSLOTS 1 2 3
OK

但是,如果再次尝试执行,将导致错误,因为这些槽已被分配

> CLUSTER ADDSLOTS 1 2 3
ERR Slot 1 is already busy

在 Valkey 集群中的使用

此命令仅在集群模式下工作,并在以下 Valkey 集群操作中很有用

  1. 在创建新集群时,cluster ADDSLOTS 用于初始设置主节点,将可用的哈希槽分配给它们。
  2. 为了修复某些槽未被分配的损坏集群。

槽传播信息和警告

请注意,一旦节点将一组槽分配给自己,它就会开始在心跳包头中传播此信息。但是,其他节点只有在以下两种情况下才会接受此信息:一是它们认为该槽尚未绑定到其他节点,二是通告新哈希槽的节点的配置纪元大于表中当前列出的节点。

这意味着此命令应仅由协调 Valkey 集群的应用程序(如 valkey-cli)谨慎使用,如果该命令在不正确的上下文中使用,可能会使集群处于错误状态或导致数据丢失。

RESP2/RESP3 回复

简单字符串回复:如果命令成功则返回 OK。否则返回错误。