client pause
CLIENT
CLIENT PAUSE timeout
自2.9.50起可用。
时间复杂度:
O(1)
CLIENT PAUSE 是一个连接控制命令,它能够在指定的时间内(以毫秒为单位)挂起所有 Redis 客户端。
该命令执行以下操作:
- 它会停止处理来自普通客户端和发布/订阅客户端的所有未决命令。然而,与从站的互动将继续正常。
- 但是,对调用方 ASAP 返回 OK ,因此 CLIENT PAUSE 命令执行不会自行暂停。
- 当指定的时间已过时,所有客户端都将被解除阻塞:这将触发在暂停期间处理每个客户端的查询缓冲区中累积的所有命令。
该命令非常有用,因为它能够以受控方式将客户端从 Redis 实例切换到另一个实例。例如,在实例升级期间,系统管理员可以执行以下操作:
- 使用 CLIENT PAUSE 暂停客户端
- 等待几秒钟以确保从服务器处理来自主服务器的最新复制流。
- 把其中一个从站变成主站。
- 重新配置客户端以连接新主服务器。
可以在 MULTI / EXEC 块中将 CLIENT PAUSE 与INFO replication
命令一起发送,以便在客户端被阻止时获得当前的主站偏移量。这样就可以等待从属端的特定偏移量,以确保处理所有的复制流。
由于 Redis 3.2.10 / 4.0.0 ,此命令还可以防止在客户端暂停期间键被驱逐或过期。这样,不仅从客户端无法写入的角度,而且从内部操作的角度来看,数据集保证是静态的。
返回值
简单字符串回复:如果超时无效,则该命令返回 OK 或错误。