CLIENT PAUSE 暂停客户端命令
CLIENT PAUSE 在指定的毫秒时长内暂停处理客户端命令,常用于故障切换演练与运维窗口:切换前把写流量停一小会儿,让副本追上偏移量,能显著降低切换后的数据差异风险。WRITE 修饰符只拦截写命令、读命令继续执行;ALL 则读写一起暂停。需要提前恢复时用 CLIENT UNPAUSE。它只影响客户端命令的处理,持久化、复制等后台行为照常进行。
基本信息
| 语法 | CLIENT PAUSE milliseconds [WRITE|ALL] |
|---|---|
| 时间单位 | 毫秒 |
| WRITE | 只拦写命令,读继续 |
| ALL | 读写全部暂停 |
| 提前恢复 | CLIENT UNPAUSE |
| WRITE 修饰符 | Redis 6.2 起支持 |
| 影响范围 | 所有连接的客户端命令处理 |
典型使用场景
- 主从切换前让写流量停顿,给副本留出追平时间
- 演练切换流程,验证业务在短暂拒写下的表现
- 做需要写一致性的运维操作时,先短暂封写再执行
- 迁移或升级窗口内限制写入,防止新旧实例数据错乱
- 排查写流量引起的抖动,临时封写验证因果关系
- 配合复制状态检查,确认切换窗口内的偏移量差
- 批量数据修复前统一封写,避免修复过程中被新写入覆盖
- 为客户端重试策略做压测,量化短暂拒写的业务影响
暂停与恢复
暂停与恢复
redis-cli CLIENT PAUSE 5000 WRITE # 5 秒内只拦写命令
redis-cli INFO replication # 同时观察副本偏移量
redis-cli CLIENT UNPAUSE # 有事提前恢复
redis-cli CLIENT PAUSE 2000 ALL # 读写全部暂停 2 秒
redis-cli INFO clients # 暂停期间连接仍然存在
redis-cli CLIENT LIST | wc -l # 确认连接未被误断修饰符对照
| 写法 | 拦截对象 | 适用 |
|---|---|---|
| WRITE | 写命令 | 切换窗口、读写分离部署 |
| ALL | 读与写 | 需要完全静默的实验场景 |
切换演练里它能让副本追平偏移,减少切换后的数据差异,前提是业务能接受这几秒的写入失败。
暂停时长的单位是毫秒,脚本里单位算错会直接把业务写入掐断,演练环境先调好参数再上生产。
暂停期间连接不会被断开,客户端会看到命令延迟返回或超时,因此客户端超时设置要大于暂停时长。