Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

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

Redis CLIENT PAUSE 命令

Redis 服务器 Redis 服务器


Redis CLIENT PAUSE 命令是连接控制命令,它可以将所有客户端的访问暂停指定的毫秒数。

命令格式

CLIENT PAUSE timeout

可用版本:>=2.9.50

时间复杂度:O(1)

该命令执行如下:

  • 它会停止处理所有来自一般客户端或者 pub/sub 客户端的命令。但是和 slaves 的交互命令不受影响。
  • 因为它会尽快返回 OK 给调用者,所以 CLIENT PAUSE 不会被自己暂停。
  • 当指定的超时时间结束,所有的客户端都被解除阻塞,查询缓存里积累的所有命令都会被处理。

使用场景

当该命令可以可控的将客户端从一个 Redis 实例切换至另一个实例。比如,当需要升级一个实例时,管理员可以作如下操作:

  • 使用 CLIENT PAUSE 暂停所有客户端。
  • 等待数秒,让 slaves 节点处理完所有来自 master 的复制命令。
  • 将一个 salve 节点切换为 master。
  • 重配客户端以来接新的 master 节点。

可以在 MULTI/EXEC 中一起使用 CLIENT PAUSE 和 INFO replication 以在阻塞的同时,获取当前 master 的偏移量。用这种方法,可以让 slaves 处理至指定的复制偏移节点。

从 Redis 3.2.10/4.0.0 开始,此命令还可以防止在客户端暂停期间将 keys 过期。不仅从客户端角度无法写入,还是从内部操作的角度来看,数据集保证是静态的。

命令返回值

命令返回 OK,超时设置无效,则返回错误。