美文网首页
memcached锁的实现 cas协议

memcached锁的实现 cas协议

作者: 金星show | 来源:发表于2018-12-13 16:35 被阅读0次

    1.事例:

    image.png

    这里$cas可以理解为获取'ip_block'那时的一个版本号标记,引用类型输出
    然后在cas() 方法中将这个标记放入检测,如果版本号没变,则可以处理数据,版本号改变则返回失败。(类似于redis中的watch事务检测)

    2.memcached 中 add 、 set 、replace 的区别

    memcache::add 方法:add方法用于向memcache服务器添加一个要缓存的数据。
    memcache::set 方法:set方法用于设置一个指定key的缓存内容,set方法是add方法和replace方法的集合体
    mmecache::replace方法: replace方法用于替换一个指定key的缓存内容,如果key不存在则返回false

    比较:
    方法 当key存在 当key不存在
    add false true
    replace 替换(true) false
    set 替换(true) true

    3.Memcached gets 命令

    Memcached gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空。

    4.Memcached CAS 命令

    Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作
    它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
    检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。

    要在 Memcached 上使用 CAS 命令,你需要从 Memcached 服务商通过 gets 命令获取令牌(token)。

    gets 命令的功能类似于基本的 get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些:64 位的整型值非常像名称/值对的 "版本" 标识符。

    相关文章

      网友评论

          本文标题:memcached锁的实现 cas协议

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