美文网首页
Memcache CAS协议介绍及使用

Memcache CAS协议介绍及使用

作者: 程序员小饭 | 来源:发表于2020-04-20 22:19 被阅读0次

    1.什么是CAS

    所谓CAS,check and set,在写操作时,先检查是否被别的线程修改过。
    基本原理非常简单,一言以蔽之,就是“版本号”。每个存储的数据对象,多有一个版本号。我们可以从下面的例子来理解:
    如果不采用CAS,则有如下的情景:

    • 第一步,A取出数据对象X;
    • 第二步,B取出数据对象X;
    • 第三步,B修改数据对象X,并将其放入缓存;
    • 第四步,A修改数据对象X,并将其放入缓存。
      我们可以发现,第四步中会产生数据写入冲突。
      如果采用CAS协议,则是如下的情景。
    • 第一步,A取出数据对象X,并获取到CAS-ID1;
    • 第二步,B取出数据对象X,并获取到CAS-ID2;
    • 第三步,B修改数据对象X,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID是否一致。结果是“一致”,就将修改后的带有CAS-ID2的X写入到缓存。
    • 第四步,A修改数据对象Y,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID是否一致。结果是“不一致”,则拒绝写入,返回存储失败。
      这样CAS协议就用了“版本号”的思想,解决了冲突问题。

    相关文章

      网友评论

          本文标题:Memcache CAS协议介绍及使用

          本文链接:https://www.haomeiwen.com/subject/xivsihtx.html