redis实现乐观锁

乐观锁和悲观锁区别

  • 悲观锁:
    任何时候都会出问题,无论做什么都会加锁
  • 乐观锁:
    认为任何时候都不会出问题,所以不会上锁。更新数据的时候去判断一下,在此期间是否有人修改过这个数据
    mysql中增加字段version,更新的时候比较version

redis 乐观锁

  1. 我们在redis中使用watch这个语法来对某一个值进行监控,在redis事务结束的时候,watch监控也就结束了

    事务正常结束,数据期间没有变动,这个时候就正常执行成功

  2. 如果redis中对某一个值进行监控后,有另一个进程对该值进行了修改,那么操作该值的事务会执行失败

    在执行图中事务之前,对watch监控的对象进行了修改,所以事务执行失败
    所以watch 可以当作redis的乐观锁操作

解决监视值的事务执行失败的方法

如果watch后的事务执行失败,可以使用unwatch进行解锁,然后再重新进行监视

posted @ 2022-07-11 18:00  影梦无痕  阅读(207)  评论(0)    收藏  举报