首页/数据/Redis 进阶速查/CLIENT PAUSE 暂停客户端命令
性能与排障129 条

CLIENT PAUSE 暂停客户端命令

CLIENT PAUSE milliseconds [WRITE|ALL] 在指定时长内暂停处理客户端命令,常用于切换窗口让复制追平或脚本化变更。

Redis 进阶速查数据更新于 2026-10-13

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读与写需要完全静默的实验场景
切换演练里它能让副本追平偏移,减少切换后的数据差异,前提是业务能接受这几秒的写入失败。
暂停时长的单位是毫秒,脚本里单位算错会直接把业务写入掐断,演练环境先调好参数再上生产。
暂停期间连接不会被断开,客户端会看到命令延迟返回或超时,因此客户端超时设置要大于暂停时长。

易错点

  • 把毫秒当秒传入,暂停时长放大千倍,业务写入长时间不可用
  • 选择 ALL 模式连读一起停,读敏感业务出现大面积超时
  • 暂停期间无人监控副本偏移,暂停结束后仍未追平就发起切换
  • 暂停后忘记调用 CLIENT UNPAUSE,只能等超时结束
  • 在客户端未做重试与退避的情况下直接封写,触发写入丢失

数据来源与参考

  • Redis 官方文档:CLIENT PAUSE 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌