Memcached CAS 命令
-
TelnetCAS命令
CAS代表“检查并设置”或“比较并交换”。如果自上次获取以来未更新数据,则使用Memcached CAS命令设置数据。如果该键在Memcached中不存在,则返回NOT_FOUND。Memcached CAS命令的基本语法如下所示-set key flags exptime bytes unique_cas_key [noreply] value
语法中的关键字如下所述-- key-它是键的名称,通过它存储和从Memcached检索数据。
- flags-它是服务器与用户提供的数据一起存储的32位无符号整数,并在检索到项目时随数据一起返回。
- exptime-它是到期时间,以秒为单位。0表示没有延迟。如果exptime超过30天,则Memcached会将其用作UNIX时间戳记进行过期。
- bytes-这是数据块中需要存储的字节数。这是需要存储在Memcached中的数据的长度。
- unique_cas_key-这是从gets命令获取的唯一密钥。
- noreply(可选) -这是一个参数,它通知服务器不要发送任何答复。
- value-它是需要存储的数据。使用上述选项执行命令后,需要在新行中传递数据。
输出命令的输出如下所示-- STORED - 表示存储成功。
- ERROR - 表示保存数据时出错或语法错误。
- EXISTS - 表示自上次获取以来有人修改了CAS数据。
- NOT_FOUND - 表示键在Memcached服务器中不存在。
要在Memcached中执行CAS命令,您需要从Memcached gets命令获取CAS令牌。cas tp 0 900 9 ERROR cas tp 0 900 9 2 memcached set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 2 redis EXISTS cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
-
使用Java应用程序使用CAS
要在Memcached服务器中CAS命令,您需要使用Memcached cas方法。import java.io.IOException; import java.net.InetSocketAddress; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = null; try { mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } System.out.println("Connection to server sucessfully"); // 设置数据库 第一个参数key 第二个参数过期时间,第三个参数value System.out.println("set status:" + mcc.set("jc2182", 900, "memcachd").getStatus()); System.out.println("Get from Cache:" + mcc.get("jc2182")); // 获取cas token long castToken = mcc.gets("jc2182").getCas(); System.out.println("Cas token:" + castToken); // 设置新值 System.out.println("Now set new data:" + mcc.cas("jc2182", castToken, 900, "redis")); System.out.println("Get from Cache:" + mcc.get("jc2182")); } }
输出Connection to server sucessfully set status:{OperationStatus success=true: STORED} Get from Cache:memcachd Cas token:9 Now set new data:OK Get from Cache:redis