redis实现乐观锁
乐观锁和悲观锁区别
- 悲观锁:
任何时候都会出问题,无论做什么都会加锁 - 乐观锁:
认为任何时候都不会出问题,所以不会上锁。更新数据的时候去判断一下,在此期间是否有人修改过这个数据
mysql中增加字段version,更新的时候比较version
redis 乐观锁
-
我们在redis中使用watch这个语法来对某一个值进行监控,在redis事务结束的时候,watch监控也就结束了

事务正常结束,数据期间没有变动,这个时候就正常执行成功 -
如果redis中对某一个值进行监控后,有另一个进程对该值进行了修改,那么操作该值的事务会执行失败

在执行图中事务之前,对watch监控的对象进行了修改,所以事务执行失败
所以watch 可以当作redis的乐观锁操作
解决监视值的事务执行失败的方法
如果watch后的事务执行失败,可以使用unwatch进行解锁,然后再重新进行监视


浙公网安备 33010602011771号