监控! watch
悲观锁:
·很悲观,认为什么时候都会出问题,无论做什么都会加锁!
乐观锁︰
·很乐观,认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据
·获取version
·更新的时候比较version
Redis测监视测试
正常执行成功
watch money #监视 money 对象
multi #事务正常结束,数据期间没有发生变动,这个时候就正常执行成功!
测试多线程修改值,使用watch可以当做redis的乐观锁操作!
#执行之前,另外一个线程,修改了我们的值,这个时候,就会导致事务执行失败!
解决:
如果修改失败,获取最新的值就好
UNWATCH #如果发现事务执行失败,就先解锁
WATCH money #获取最新的值,再次监视,select version
exec #比对监视的值是否发生了变化,如果没有变化,那么可以执行成功,如果变量就执行失败!