利用StackExchange.Redis操作redis事务会产生ABA情况

来自China的神秘人 2020-09-08 04:47:22
ConnectionMultiplexer con = ConnectionMultiplexer.Connect("127.00.1:6379");// -- 1实例化客户端
IDatabase db= con.GetDatabase();//获取数据库 -- 2
var tran = db.CreateTransaction();//创建事物 -- 3
tran.AddCondition(Condition.StringEqual("key","40"));//--4 乐观锁
tran.StringSetAsync("key", "60"); --5 别的客户端修改了key的值
bool result = tran.Execute();//提交事物 --6

有个问题:
当执行第4步的时候,此时key对应value的值是40。
当执行到第6步之前,key的值在B客户端发生了更改变成30,然后又被C客户端改成40。
第6步取提交事务,我发现还是可以提交成功。 那这不就是ABA情况吗?

我用Redis的客户端 watch,multi,exec都不会出现ABA问题。为什么用StackExchange.Redis会出现啊。
...全文
119 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧