cluster addslots(集群 槽位)
CLUSTER
CLUSTER ADDSLOTS slot [slot ...]
自3.0.0起可用。
时间复杂度:
O(N)其中N是散列槽参数的总数
此命令对于修改节点的群集配置视图很有用。具体来说,它将一组散列槽分配给接收该命令的节点。如果命令成功,节点将把指定的散列槽映射到自己,并开始广播新的配置。
但,请注意:
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. 创建一个新的集群 ADDSLOTS 用于初始设置主节点拆分它们之间的可用哈希槽。
2. 为了修复某些插槽未分配时损坏的群集。
有关插槽传播和警告的信息
请注意,一旦节点为其自身分配一组插槽,它将开始在心跳包头中传播此信息。但是,其他节点只有在插槽尚未与另一个节点绑定的情况下,或者通告新散列插槽的节点的配置历元大于表中当前列出的节点时才会接受信息。
这意味着这个命令只应该被管理 Redis 集群的应用程序所关注,比如redis-trib
,如果在正确的上下文中使用该命令会使集群处于错误状态或导致数据丢失。
返回值
简单的字符串回复:OK
如果命令成功。否则会返回错误。