赞
踩
关于锁,相信各位在很多场景都遇到过,数据库里面的锁,Java 里面的锁等等。这次,小编和大家分享一下 Redis 的乐观锁,用最通俗易懂的方式让各位了解到这种锁,怎么出现,怎么用的。乐观锁是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。
下面小编进行具体演示:
1,登录Redis。下面的指令均在 Docker 里面部署的 Redis 进行。如果各位的环境还没部署好,可以参考小编之前的文章:Ubuntu 部署 Docker 完整步骤 和 Docker 部署 Redis 完整步骤
2,定义一个 key,开启两个redis客户端,监控这个key。
#####################(窗口1)
127.0.0.1:6379> keys * #查看已经存在的key, balance值是100,没有的话可以创建一下
1) "balance"
127.0.0.1:6379> watch balance #监控key
OK
#####################(窗口2)
127.0.0.1:6379> watch balance
OK
3,开启事务
######################(窗口1)
127.0.0.1:6379> multi #开启事务
OK
127.0.0.1:6379> incrby balance 10 #设置key 增长10,进入执行队列
QUEUED
######################(窗口2)
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incrby balance 30 #设置key 增长30,进入执行队列
QUEUED
4,执行
######################(窗口1)
127.0.0.1:6379> exec #执行
1) (integer) 110
######################(窗口2)
127.0.0.1:6379> exec
(nil) ##无法执行,此时即为乐观锁场景
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。