关于memcache中'乐观锁'的问题

2013-08-09 15:22:12 +08:00
 timepast
memcache中在1.2.4版本以后 有了gets 和cas 通过类似乐观锁的方法解决并发问题,具体的网上资料很多.

现在遇到此情景:

解决了memcache原子性的问题,但是随之而来,有多条业务不能提交,目前想到的办法是递归提交,
但是考虑到这样效率会很低.

请大家指导下,在平时业务中使用乐观锁,机制时,业务都是怎么处理的,有什么好的思路.
5523 次点击
所在节点    Java
3 条回复
cloudzhou
2013-08-09 15:32:16 +08:00
我的观点是
1 不要在 cache 里面要求一致性,维护这个一致性代价很大,如果以严格的并发角度来看,很多实现都是非并发安全的,你要考虑在出错的情况下实现自我纠正,特别是不能导致错误持久化。
2 哪怕是要求了一致性,像你刚才提出的“多条业务不能提交”,说明你们的竞争太激烈,乐观锁的用处就是大部分时间是“乐观的”(我99%能获取更新成功),在竞争太激烈下就是悲观了。你要考虑事务最小化,事务处理,然后立刻提交。
GTim
2013-08-09 15:36:41 +08:00
坐等高人讨论
timepast
2013-08-09 15:52:07 +08:00
@cloudzhou 茅塞顿开,之前还一直在考虑sync的效率问题
1.memcache只提供了乐观情况下同步解决方案.
2.在程序(非cache)实现线程同步(认为是悲观情况)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/78566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX