今天阅读了 Redis 的分布式锁相关部分,在这里做一下笔记。
Redis 的分布式锁主要依赖于 Watch 命令。
Watch 命令的语法为
1 | watch key |
当进入 watch 状态后,修改该 key 时会去检查 key 在执行过程中是否已经被修改。如果已经被修改,则命令会执行失败。
如
1 | set amount 1000 |
在 watch amount
后如果有别人已经修改了 amount 值,那么之后的事务将会失败。这样就实现了简单的乐观锁。
watch
执行之后可以执行 unwatch
操作来取消观察状态。例如 watch
之后去判断库存数量,如果已经是 0,可以取消观察并直接向用户返回库存消耗完毕。