设为首页 加入收藏

TOP

实战Memcached缓存系统(5)Memcached的CAS程序实例
2014-11-24 03:05:04 来源: 作者: 【 】 浏览:2
Tags:实战 Memcached 系统 CAS 程序 实例
1. 非CAS
首先看一个不是CAS的Memcached程序实例。实例的问题原型,见上一篇博文。
程序实例:
[java]
package com.sinosuperman.memcached;

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;

public class Test {
public static void main(String[] args) throws IOException {
MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));

cache.set("x", 1800, "Love");

String obj1 = (String) cache.get("x");
String obj2 = (String) cache.get("x");
obj2 = "Michael";

cache.set("x", 1800, obj2);
System.out.println("Non-CAS 2:\t" + obj2);
System.out.println("Non-CAS 1:\t" + obj1);
}
}



运行结果:
[plain]
2011-12-18 23:12:39.836 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-12-18 23:12:39.843 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@b09e89
Non-CAS 2: Michael
Non-CAS 1: Love


可见在多个Client操作时,一定会引起写不一致性的问题。

2. CAS
程序实例:
[java]
package com.sinosuperman.memcached;

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.CASValue;
import net.spy.memcached.MemcachedClient;

public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws IOException {
MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));

cache.set("y", 1800, "Love");

CASValue casValue1 = cache.gets("y");
CASValue casValue2 = cache.gets("y");
cache.cas("y", casValue2.getCas(), casValue2.getValue());

System.out.println("CAS 2:\t" + casValue2.getCas());
System.out.println("Value 2:\t" + casValue2.getValue());

System.out.println("CAS 1:\t" + casValue1.getCas());
System.out.println("Value 1:\t" + casValue1.getValue());
}
}

运行结果:
[plain]
2011-12-18 23:07:14.528 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-12-18 23:07:14.541 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@1621e42
CAS 2: 11
Value 2: Love
CAS 1: 11
Value 1: Love 、
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sql---两个查询 下一篇sql中将两个表中数据相加求表中总..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)