Memcached教程

Memcached CAS命令

CAS的完整格式为 检查并设置比较并交换。如果自上次获取以来未更新数据,则此命令用于设置数据。换句话说,可以说CAS是一种存储数据的操作,但前提是自从您上一次读取数据以来,没有其他人更新过数据。此命令对于解决更新缓存数据时的竞争条件非常有用。

语法

set key flags exptime bytes unique_cas_key [noreply]
value
在这里
key: 这是从Memcached存储和检索的数据的密钥。
flags: 标志是服务器与数据一起存储的32位无符号整数(由用户提供),并在检索到项目时随数据一起返回。
exptime: exptime是以秒为单位的到期时间。 0表示没有延迟。如果超过30天,则Memcached会将其用作UNIX时间戳记过期。
bytes: 字节是数据块中需要存储的字节数。这是存储在Memcached中的数据的长度。
Unique_cas_key: 这是一个唯一密钥,可从gets命令获取。
noreply: 。这是一个可选参数。用来通知服务器不要发送任何答复。
value: 值是必须存储的数据。使用上述选项执行命令后,需要在新行上传递数据。

返回值

此命令将返回以下值:
STORED: 存储意味着成功 ERROR: 显示保存数据时出错或语法错误。 EXISTS: : 它表明某人自上次获取以来已经修改了CAS数据。 NOT_FOUND: : 它表明该密钥在Memcached服务器中不存在。

示例

要在Memcached中执行CAS命令,我们必须从Memcached gets 命令中获取CAS令牌。
我们来看一个示例:
cas nm 0 900 8
ERROR
cas nm 0 900 8 2
amandeep
NOT_FOUND
set nm 0 900 8
amandeep
STORED
gets nm
VALUE nm 0 8 1
amandeep
END
cas nm 0 900 4 2
deep
EXISTS
cas nm 0 900 4 1
deep
STORED
gets nm
VALUE nm 0 4 2
deep
END
Memcached服务器
Memcached CAS命令
Memcached客户端
Memcached CAS命令

使用Java应用程序的CAS

考虑到Memcached服务器正在主机127.0.0.1和端口11211.v上运行。在这里,我们将使用gets()方法在Memcached服务器中添加数据。

示例

import net.spy.memcached.MemcachedClient;
public class MemcachedJava {
   public static void main(String[] args) {
     
     // Connecting to Memcached server on localhost
      MemcachedClient mcc = new MemcachedClient(new
      InetSocketAddress("127.0.0.1", 11211));
      System.out.println("Connection to server successful");
      System.out.println("set status:"+mcc.set("nm", 900, "amandeep").isDone());
      // Get cas token from cache
      long castToken = mcc.gets("nm").cas;
      System.out.println("Cas token:"+castToken);
      // now set new data in memcached server
      System.out.println("Now set new data:"+mcc.cas("nm",
      castToken, 900, "deep"));
      System.out.println("Get from Cache:"+mcc.get("nm"));
   }
}
输出:
Connection to server successfully
set status:true
Cas token: 3
Prepend to cache:OK
Get from Cache:deep

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4