Memcached 的 cas 命令用于执行一个 “检查并设置” 的操作,它仅在当前客户端最后一次取值后,该 key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
检查是通过 cas_token 参数进行的, 这个参数是 Memcach 指定给已经存在的元素的一个唯一的 64 位值。
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)。 |
返回值 | 描述 |
---|---|
STORED | 保存成功后的输出。 |
ERROR | 保存出错或语法错误。 |
EXISTS | 在最后一次取值后另外一个用户也在更新该数据。 |
NOT_FOUND | Memcached 服务上不存在该键值。 |
我们首先,使用如下命令,启动 Memcached,具体命令如下:
memcached -d -m 256 -u root -p 11211 -c 1024 –P /tmp/memcached.pid
启动完毕后,如下图所示:
现在,我们已经成功启动了 Memcached,我们可以使用 telnet 客户端连接它,具体命令如下:
telnet 127.0.0.1 11211
连接成功后,如下图所示:
现在,我们首先,使用 set 命令添加一个数据,具体命令如下:
set haicoder 0 120 12 haicoder.net
执行完毕后,此时,如下图所示:
我们看到,此时,我们已经成功设置了数据,现在,我们取出存储的数据,具体命令如下:
gets haicoder
执行完毕后,如下图所示:
我们看到,我们已经成功设置了数据并且获取到了数据。现在,我们再次使用 cas 命令,更新数据,具体命令如下:
cas haicoder 0 120 9 17 memcached
执行完毕后,如下图所示:
现在,我们再次使用 get 命令,获取值,具体命令如下:
get haicoder
执行完毕后,如下图所示:
我们看到,此时,键 haicoder 所对应的值已经被成功更新了。
Memcached 的 cas 命令用于执行一个 “检查并设置” 的操作,它仅在当前客户端最后一次取值后,该 key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。