首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  Java

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

  •  
  •   timepast · 2013-08-09 15:22:12 +08:00 · 4367 次点击
    这是一个创建于 2048 天前的主题,其中的信息可能已经有所发展或是发生改变。
    memcache中在1.2.4版本以后 有了gets 和cas 通过类似乐观锁的方法解决并发问题,具体的网上资料很多.

    现在遇到此情景:

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

    请大家指导下,在平时业务中使用乐观锁,机制时,业务都是怎么处理的,有什么好的思路.
    3 回复  |  直到 1970-01-01 08:00:00 +08:00
        1
    cloudzhou   2013-08-09 15:32:16 +08:00   ♥ 1
    我的观点是
    1 不要在 cache 里面要求一致性,维护这个一致性代价很大,如果以严格的并发角度来看,很多实现都是非并发安全的,你要考虑在出错的情况下实现自我纠正,特别是不能导致错误持久化。
    2 哪怕是要求了一致性,像你刚才提出的“多条业务不能提交”,说明你们的竞争太激烈,乐观锁的用处就是大部分时间是“乐观的”(我99%能获取更新成功),在竞争太激烈下就是悲观了。你要考虑事务最小化,事务处理,然后立刻提交。
        2
    GTim   2013-08-09 15:36:41 +08:00
    坐等高人讨论
        3
    timepast   2013-08-09 15:52:07 +08:00
    @cloudzhou 茅塞顿开,之前还一直在考虑sync的效率问题
    1.memcache只提供了乐观情况下同步解决方案.
    2.在程序(非cache)实现线程同步(认为是悲观情况)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2874 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1