CLUSTER ADDSLOTS

语法
CLUSTER ADDSLOTS slot [slot ...]
可用版本
Redis Open Source 3.0.0
时间复杂度
O(N),其中 N 是哈希槽参数的总数
ACL 分类
@admin, @slow, @dangerous,

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

但请注意:

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

示例

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

> CLUSTER ADDSLOTS 1 2 3
OK

但是,如果再次尝试执行此命令,将因槽已被分配而导致错误

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

在 Redis 集群中的用法

此命令仅在集群模式下有效,可用于以下 Redis 集群操作:

  1. 为了创建一个新的集群,使用 CLUSTER ADDSLOTS 命令初步设置主节点,并在它们之间分配可用的哈希槽。
  2. 为了修复某些槽未被分配的损坏集群。

关于槽传播的信息和警告

请注意,一旦节点将一组槽分配给自身,它将开始在心跳包头中传播此信息。但是,其他节点仅在它们看来该槽尚未与另一个节点绑定,或者如果通告新哈希槽的节点的配置纪元(configuration epoch)大于表中当前列出的节点时,才会接受此信息。

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

RESP2/RESP3 回复

简单字符串回复:如果命令成功则返回 OK。否则返回错误。
评价此页面
返回顶部 ↑