hooyantsing's Blog

22_Redis实现乐观锁

字数统计: 242阅读时长: 1 min
2020/08/17

22 Redis实现乐观锁

Redis最新超详细版教程通俗易懂

监控 Watch

悲观锁
  • 很悲观,什么时候都会出问题,无论做什么都加锁。

    乐观锁
  • 很乐观,认为什么时候都不会出问题,所以不会上锁。更新数据的时候去判断一下,在此期间是否有人修改过这个数据。

  • 获取 version

  • 更新的时候比较 version

    Redis监视测试

多线程修改值,使用 watch 可以当作 redis 的乐观锁操作。

如果没有其他终端修改值,那么 version 不变,事务可以正常执行。

4f1efa2680e2e545e5b37872351fadb1.png

如果有其他终端修改值,那么 version 值会发生改变,在比对时异常。

[终端1]

8e823cdbb5cae498cbe29b475f88b7b7.png

既然事务执行失败了,那么如何重新执行这个事务呢?

watch 时会获取 vision 信息。

首先解锁,unwatch 取消锁,放弃旧的 vision 值。

然后再加锁,watch,拿到最新的 vision 值。

da146c91bc529878116889df461a1f16.png

CATALOG
  1. 1. 22 Redis实现乐观锁
    1. 1.0.0.1. 悲观锁
    2. 1.0.0.2. 乐观锁