redis实现乐观锁
监控(Watch)
悲观锁:
什么时候都会出问题,无论做什么都加锁
乐观锁:
认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,再此期间是否有人修改过这个数据
mysql获取version
更新的时候比较version
Redis监视测试
watch key 监视key对象
测试多线程修改值,使用watch可以当做redis的乐观锁操作,执行前,另外一个线程修改了值,这个时候会导致第一个线程
事务执行失败
需要解锁,取消监视,用unwatch(如果发现事务执行失败就先解锁),再重新监视watch key,输入命令后 exec(比对监视的
值是否发生变化,如果变化则失败,不变化则成功)
如果修改失败,获取最新的值就好