Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-cluster-addslots.html

Redis CLUSTER ADDSLOTS 命令

Redis 集群(Cluster) Redis 集群(Cluster)


Redis CLUSTER ADDSLOTS 命令用于把一组 hash slots 分配给接收命令的节点。这个命令仅在 cluster 模式下生效,如果命令执行成功,节点将指定的 hash slots 映射到自身,节点将获得指定的 hash slots,同时开始向集群广播新的配置。

命令格式

CLUSTER ADDSLOTS slot [slot ...]

可用版本:>=3.0.0

时间复杂度:O(N),N 为哈希插槽的总数。

需要值得注意的是:

  1. 该命令只有当所有指定的 slots 在接收命令的节点上还没有分配得的情况下生效。节点将拒绝接纳已经分配到其他节点的 slots(包括它自己的)。
  2. 同一个 slot 被指定多次的情况下命令会失败。
  3. 执行这个命令有一个副作用,如果 slot 作为其中一个参数设置为 importing,一旦节点向自己分配该 slot(以前未绑定)这个状态将会被清除。

命令返回值

如果命令执行成功,返回 OK,否则返回错误信息。

使用场景

这个命令仅在 cluster 模式下生效,而且作用于 redis 集群以下操作:

  • 创建新集群时,ADDSLOTS 用于主节点初始化分配可用的 hash slots。
  • 为了修复有未分配 slots 的坏集群。

注意,一旦一个节点为自己分配了一个 slot 集合,它就会开始将这个信息在心跳包的头里传播出去。然而其他节点只有在它们有 slot 没有被其他节点绑定或者传播的新的 hash slot 的配置年代大于列表中的节点时才会接受这个信息。这意味着这个命令应该仅通过 redis 集群应用管理客户端例如 redsi-trib 谨慎使用,而且这个命令如果使用了错误的上下文会导致集群处于错误的状态或者导致数据丢失。

示例

以下命令分配 1 2 3 slot 到接收命令的节点:

redis> CLUSTER ADDSLOTS 1 2 3
OK

但是试图再次执行命令结果将会错误,因为 slots 已经被分配了:

redis> CLUSTER ADDSLOTS 1 2 3
ERR Slot 1 is already busy
Redis CLUSTER INFO 命令返回使用 INFO 风格的形式展示关于 Redis 集群的重要参数。这个命令主要是显示当前连接的集 ...
Redis CLUSTER SLOTS 命令返回哈希槽和 Redis 实例映射关系。这个命令对客户端实现集群功能非常有用,使用这个命令可以获 ...
Redis CLUSTER REPLICATE 命令重新配置一个节点成为指定 master 的 salve 节点。如果收到命令的节点是一个 ...
Redis CLUSTER RESET 命令根据 reset 类型配置 hard 或者 soft。注意该命令在主节点 hold 住一个或多个 ...
Redis CLUSTER FORGET 命令从收到命令的 Redis 集群节点的节点信息列表中移除指定 ID 的节点。该命令不仅将待删除节 ...