Memcached 教程
1. Memcached 教程 2. Linux Memcached 安装 3. Memcached 连接 4. Memcached set 命令 5. Memcached add 命令 6. Memcached replace 命令 7. Memcached append 命令 8. Memcached prepend 命令 9. Memcached CAS 命令 10. Memcached get 命令 11. Memcached gets 命令 12. Memcached delete 命令 13. Memcached incr 与 decr 命令 14. Memcached stats 命令 15. Memcached stats items 命令 16. Memcached stats slabs 命令 17. Memcached stats sizes 命令 18. Memcached flush_all 命令

Memcached CAS 命令

Memcached CAS 命令

Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作

它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。

检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。

语法:

CAS 命令的基本语法格式如下:


cas key flags exptime bytes unique_cas_token [noreply]

value

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。
  • flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
  • exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
  • bytes:在缓存中存储的字节数
  • unique_cas_token通过 gets 命令获取的一个唯一的64位值。
  • noreply(可选): 该参数告知服务器不需要返回数据
  • value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

实例

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

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

实例步骤如下:

  • 如果没有设置唯一令牌,则 CAS 命令执行错误。
  • 如果键 key 不存在,执行失败。
  • 添加键值对。
  • 通过 gets 命令获取唯一令牌。
  • 使用 cas 命令更新数据
  • 使用 get 命令查看数据是否更新

cas tp 0 900 9

ERROR             <− 缺少 token



cas tp 0 900 9 2

memcached

NOT_FOUND         <− 键 tp 不存在



set tp 0 900 9

memcached

STORED



gets tp

VALUE tp 0 9 1

memcached

END



cas tp 0 900 5 1

redis

STORED



get tp

VALUE tp 0 5

redis

END

输出

如果数据添加成功,则输出:


STORED

输出信息说明:

  • STORED:保存成功后输出。
  • ERROR:保存出错或语法错误。
  • EXISTS:在最后一次取值后另外一个用户也在更新该数据。
  • NOT_FOUND:Memcached 服务上不存在该键值。