赞
踩
使用 watch 监控
悲观锁:
很悲观,什么时候都会出问题,无论做什么都加锁,效率较低
乐观锁:
很乐观,与悲观锁相反。
Redis的乐观锁实现过程:
1.更新数据的时候去判断一下,在此期间是否修改过数据。
2.获取version
3.更新的时候比较version
测试Redis watch
127.0.0.1:6379> set money 100 OK 127.0.0.1:6379> set out 0 OK 127.0.0.1:6379> watch money #监视money对象 OK 127.0.0.1:6379> multi OK 127.0.0.1:6379(TX)> decrby money 40 QUEUED 127.0.0.1:6379(TX)> incrby out 40 QUEUED 127.0.0.1:6379(TX)> exec #事务正常执行结束,数据期间没有发生变动,可以正常执行 1) (integer) 60 2) (integer) 40 127.0.0.1:6379>
当多线程修改值,使用watch 检测到另一线程操作money导致发生变动,事务提交执行的时候,就会失败,使用watch可以当做redis 的乐观锁操作。
当watch检测到数据变动的时候,此时watch失效,可以使用unwatch取消监视,再重新监视值,开启事务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。