首页/数据/Redis 进阶速查/WAIT:写入同步确认
主从与哨兵51 条

WAIT:写入同步确认

WAIT numreplicas timeout 阻塞等待指定数量的副本确认收到此前的写命令,用毫秒级等待把「写已扩散」作为可选保障,返回实际确认数量。

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

WAIT 确认了什么

WAIT numreplicas timeout 会阻塞发起命令的这条连接,直到指定数量的副本确认收到了该连接此前发出的所有写命令,或者等到超时为止,返回实际确认的副本数量。它确认的是副本内存中已经应用,不保证副本自己已经落盘;超时也不会报错,只是把当前达到的数量返回给调用方,由业务自行判断。

基本信息

语法WAIT <副本数量> <超时毫秒>
返回值实际确认的副本数量
确认语义副本内存中已应用,非持久化确认
超时行为到点返回当前数量,不抛错
阻塞范围只阻塞发起该命令的这条连接

典型使用场景

  • 写入后需要确认已扩散到至少一个副本,降低单机故障时的丢失概率
  • 关键操作后做一次确认再返回成功,让业务层的成功语义更接近实际
  • 评估主从之间的同步延迟,观察确认耗时随写入量的变化
  • 切换或维护前的安全检查,确认副本已跟上主库进度
  • 压测中量化同步确认给写路径带来的额外延迟

使用示例

使用示例
redis-cli SET order:1001 paid           # 先写入
redis-cli WAIT 1 1000                   # 等待 1 个副本确认,最多等 1000 毫秒
redis-cli INFO replication | grep -E 'connected_slaves|slave0'
redis-cli -h <从库> GET order:1001 paid  # 在副本上确认数据已可见

返回值的读法

返回值含义应对
等于请求数量目标数量副本均确认按业务逻辑继续
小于请求数量超时前只有部分副本确认记录差异并在业务侧决定是否重试
为 0没有任何副本确认检查主从链路与副本状态
明显变慢同步链路或副本出现瓶颈排查副本负载与网络质量
把 WAIT 当作强一致复制来用会显著抬高写延迟,应按业务对丢失的容忍度选择性使用,不要在每个写操作后面都加。
确认数量统计的是所有连接正常的副本,并不指定是哪一个,副本数量变化会让同样的参数得到不同结果。

易错点

  • 把 WAIT 当成强一致性保证,忽略副本自身持久化配置,副本重启后数据仍可能丢失
  • 在每次写操作后都调用 WAIT,写延迟整体抬升,吞吐明显下降
  • 只看到达数量不看实际耗时,同步链路恶化时表现为接口变慢却找不到原因
  • 以为 WAIT 能指定确认的副本,用它做定向数据校验,逻辑上并不成立

数据来源与参考

  • Redis 官方文档:WAIT 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌