博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis中的乐观锁
阅读量:314 次
发布时间:2019-03-03

本文共 394 字,大约阅读时间需要 1 分钟。

redis中的乐观锁


前言

上一篇的文章我们说了redis在运行异常的情况下没法回滚,编译错误的情况下会回滚,其实还有一种情况,即通过加了乐观锁的方式。

乐观锁,一种轻量级的锁,通过cas(compare and swap)的操作对值进行修改或者不修改,cas会导致ABA问题,但通过引入版本号可以解决。

实践

watch..unwatch进行加锁或者解锁。一开始设置surplus是40,然后加锁,开启事务(这里我只用了一条命令模拟),设置surplus为50,通过上篇文章,我们可以知道此事命令只是进入队列并未执行。

在这里插入图片描述

接下来,我开启了另一个操作界面并连接redis,将surplus设置为1000,可以执行成功。

在这里插入图片描述

此事再来执行事务,你会发现,执行不成功,因为加了乐观锁,在执行的时候发现被修改过了。

在这里插入图片描述

在实际运用中,记得当执行失败后,要进行unwatch,释放锁的操作,然后再重新获取。

转载地址:http://koxm.baihongyu.com/

你可能感兴趣的文章