首页/数据/Redis 进阶速查/WATCH 乐观锁实践
性能与排障129 条

WATCH 乐观锁实践

WATCH 监视键,EXEC 前若被改动则事务放弃(EXEC 返回空);循环重试是标准用法,适合低冲突的读改写场景。

Redis 进阶速查数据更新于 2026-10-12
流程WATCH → 读 → MULTI → 写 → EXEC
冲突EXEC 返回 nil 后重试
解除UNWATCH 或 EXEC/DISCARD

示例

示例
WATCH stock:1001
GET stock:1001
MULTI
DECR stock:1001
EXEC
高冲突场景重试成本会上升,改用 Lua 或单命令原子操作更稳。

易错点

  • 不处理 EXEC 返回 nil(事务未执行)的路径
  • 高冲突键上反复重试,放大了延迟与失败率

数据来源与参考

  • Redis 官方文档:WATCH 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌