0%

Redis 分布式锁的使用

今天阅读了 Redis 的分布式锁相关部分,在这里做一下笔记。

Redis 的分布式锁主要依赖于 Watch 命令。

Watch 命令的语法为

1
watch key

当进入 watch 状态后,修改该 key 时会去检查 key 在执行过程中是否已经被修改。如果已经被修改,则命令会执行失败。

1
2
3
4
5
6
set amount 1000

watch amount
multi
decr amount
exec

watch amount 后如果有别人已经修改了 amount 值,那么之后的事务将会失败。这样就实现了简单的乐观锁。

watch 执行之后可以执行 unwatch操作来取消观察状态。例如 watch 之后去判断库存数量,如果已经是 0,可以取消观察并直接向用户返回库存消耗完毕。