couchbase的CAS乐观锁问题是什么样的
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍couchbase的CAS乐观锁问题是什么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。场景:同步播放记录OPS: 30wcas问题CAS:Compare
千家信息网最后更新 2025年12月02日couchbase的CAS乐观锁问题是什么样的
这篇文章给大家介绍couchbase的CAS乐观锁问题是什么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
场景:同步播放记录OPS: 30w
cas问题CAS:Compare and Swap, 翻译成比较并交换。java.util.concurrent包中借助CAS实现了区别于synchronized同步锁的一种乐观锁。其原理是CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
/** * Atomically sets the value to the given updated value * if the current value {@code ==} the expected value. * * @param expect the expected value * @param update the new value * @return {@code true} if successful. False return indicates that * the actual value was not equal to the expected value. */ public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, valueOffset, expect, update); }在高并发的场景下,写入couchbase会引起cas问题。即如果未使用cas,那么后写入的数据,会覆盖前面写入的数据。如果启用的cas,那么因为同时读到了一个数据,只有第一个会写入成功,其余的因为 compare and swap 失败,未能写入。
此处要注意,虽然couchbase客户端的upsert方法,虽然支持cas,但是写入的时候,如果cas错误,那么也不会抛出异常,要使用replace方法如下面两张图所示
当我们使用正确的cas之后,需要处理cas带来的数据一致性问题,这时候,我们可以采用各自的解决方案来解决。
本人采用的是redisson的getBlockingQueue的drainTo方法,配合定时任务,实现批处理。
延伸:cas问题在服务端,如果设计的不合理会引发aba问题,简言之首先X和Y同时处理数据X先将A 改为 B然后将B改为 A此时Y将A改为其他值,也是成功的。但是此时数据已经经过了A->B->A的变化所以这时候会引用一个单独的值,来唯一区分两个值是不一样的。比如uuid等。
关于couchbase的CAS乐观锁问题是什么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
问题
数据
乐观
内存
方法
成功
内容
同时
场景
更多
同步
处理
帮助
不错
相同
一致
简言之
一致性
两个
任务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ibm服务器扩容
福建app软件开发需要多少钱
教师软件开发心得体会
重庆商城软件开发要多少钱
软件开发roi分析
虎丘区信息化软件开发系统
传奇服务器登陆不了
社团网络技术部的面试问题
数据库审计用什么设备
质量监测软件开发
武汉大专软件开发实习工资
大连软件开发培训班培训
潍坊戴尔服务器怎么收费
bts754链接数据库失败
上海网络技术开发联系人
网络安全和信息化工作特长
安卓手机被锁了数据库
小篱网络技术服务公司
杭州慧政软件开发
信息技术中的网络安全
个人简历网络技术员
寒假护苗网络安全感想
51cto数据库视频
珠海来来网网网络技术
国家网络安全管理局上海
hive是分布式数据库吗
外游服务器地址
改了网络安全协议会怎样
国家网络安全法第三十四条
我的世界云梦服务器怎么加人