*Redis WAIT 命令
阻塞等待当前连接的写命令同步到指定数量的副本(从节点)。
*语法
WAIT numreplicas timeout
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| numreplicas | Integer | 是 | 需要确认的副本数量 |
| timeout | Integer | 是 | 最大等待时间(毫秒),0 表示永久阻塞 |
*返回值
| 条件 | 返回值 |
|---|---|
| 成功 | 实际确认的副本数量(Integer) |
| 超时 | 0 或实际已确认数量 |
*时间复杂度
O(1)
*
*示例
> SET mykey "value"
OK
> WAIT 1 5000
(integer) 1
*常见错误
- 超时未确认:在超时时间内未达到指定副本数,返回实际已确认数量。
*最佳实践
- 数据一致性:强一致性要求时,写入后执行 WAIT 确保数据同步到至少 N 个副本。
- 注意超时:WAIT 会阻塞主节点,超时时间不宜过长。
*FAQ
Q: WAIT 是同步复制吗? A: 不是同步复制,是确认复制。WAIT 等待副本确认收到数据,但副本可能尚未刷盘。
Q: WAIT 会阻塞所有客户端吗? A: 不会。只阻塞当前连接。