CLUSTER ADDSLOTS

为节点分配新的哈希槽。

语法

CLUSTER ADDSLOTS slot [slot ...]

引入版本:3.0.0

复杂度摘要:O(N)

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

但请注意:

  1. 仅当从接收命令的节点的角度来看所有指定的时隙当前未分配时,该命令才起作用。节点将拒绝获取已经属于某个其他节点(包括其自身)的槽的所有权。
  2. 如果多次指定同一个槽位,该命令会失败。
  3. 如果指定的槽之一被标记为 importing,则在节点将之前未绑定的槽分配给自身后,Redis 会清除该临时状态。此时,该槽属于该节点,因此不再被导入。

必需参数

slot [slot ...]

分配给当前节点的一个或多个哈希槽。

示例

以下命令将插槽 1、2 和 3 分配给接收命令的节点:

> CLUSTER ADDSLOTS 1 2 3
OK

如果您尝试在同一节点上再次执行相同的命令,Redis 将返回错误,因为槽已分配:

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

详细说明

Redis集群中的使用

该命令仅在集群模式下有效,在以下 Redis 集群操作中有用:

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

有关槽传播和警告的信息

请注意,一旦节点为自己分配了一组时隙,它将开始在心跳数据包标头中传播此信息。然而,只有当其他节点具有尚未与另一个节点绑定的槽时,或者如果通告新哈希槽的节点的配置纪元大于表中当前列出的节点时,其他节点才会接受该信息。

这意味着只有编排 Redis 集群的应用程序(例如 redis-cli)才应谨慎使用此命令,如果在正确的上下文中使用该命令,可能会使集群处于错误状态或导致数据丢失。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
❌ 标准
❌主动-主动
❌ 标准
❌主动-主动

返回值

RESP2

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

RESP3

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

资料来源:Redis 官方 CLUSTER ADDSLOTS 文档;中文内容参考 Redis 文档许可。