Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

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

Redis CLUSTER DELSLOTS 命令

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


Redis CLUSTER DELSLOTS 命令使一个指定的 Redis Cluster 节点去忘记一个主节点正在负责的哈希槽,这些哈希槽通过参数指定。

在已经接收到 DELSLOTS 命令的节点环境中,并且因此已经去除了指定哈希槽的关联,我们认为这些哈希槽是未绑定的 。请注意,当一个节点还没有被配置去负责它们(可以通过 ADDSLOTS 完成槽的分配)并且如果该节点没有收到关于谁拥有这些哈希槽的消息时(节点通过心跳包或者更新包获取消息),这些未绑定的哈希槽是自然而然本来就存在的。如果一个节点认为一些哈希槽是未绑定的,但是从其他节点接收到一个心跳包,得知这些哈希槽已经被其他节点负责,那么会立即确立其关联关系。而且,如果接收到一个心跳包或更新包的配置纪元比当前节点的大,那么会重新建立关联。

命令格式

CLUSTER DELSLOTS slot [slot ...]

可用版本:>=3.0.0

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

值得注意的是:

  • 命令只在参数指定的哈希槽已经和某些节点关联时有效。
  • 如果同一个哈希槽被指定多次,该命令会失败。
  • 命令执行的副作用是,因为不在负责哈希槽,节点可能会进入下线状态。

命令返回值

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

使用场景

命令只在集群模式下工作,并且对调试非常有用,并且当创建新的集群时,为了可以手动的协调集群配置。当前没有被 redis-trib 使用,并且主要为了 API 的完整性存在。

示例

以下命令会移除槽 5000 和槽 5001 与接收该命令节点的关联:

redis> CLUSTER DELSLOTS 5000 5001
OK