zoukankan      html  css  js  c++  java
  • Memcache CAS协议介绍及使用

    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协议就用了“版本号”的思想,解决了冲突问题。





















  • 相关阅读:
    hihocoder-1603-提取用户名
    hihocoder-1604-股票价格II
    求最长非重复子串
    程序员面试金典--取前K小的数
    hihocoder-1574-元素魔法--数学
    Struts2工作流程
    List和Map
    线程基本知识
    AOP通过反射机制实现动态代理/IOC依赖注入
    LayUi
  • 原文地址:https://www.cnblogs.com/caoxiaojian/p/5715574.html
Copyright © 2011-2022 走看看