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