16、MemCached实战:Memcached的CAS程序实例

尊重知识,转载请注明本文来自:编程艺术家Poechant的CSDN博客 http://blog.csdn.net/poechant

1、 非CAS;

首先看一个不是CAS的Memcached程序实例。实例的问题原型,见上一篇博文。

程序实例:

1、 packagecom.sinosuperman.memcached;;
2、
3、 importjava.io.IOException;;
4、 importjava.net.InetSocketAddress;;
5、
6、 importnet.spy.memcached.MemcachedClient;;
7、
8、 public****classTest{;
9、 publicstaticvoidmain(String[]args)throwsIOException{;
10、 MemcachedClientcache=newMemcachedClient(newInetSocketAddress("127.0.0.1",11211));;
11、
12、 cache.set("x",1800,"Love");;
13、
14、 Stringobj1=(String)cache.get("x");;
15、 Stringobj2=(String)cache.get("x");;
16、 obj2="Michael";;
17、
18、 cache.set("x",1800,obj2);;
19、 System.out.println("Non-CAS2:\t"+obj2);;
20、 System.out.println("Non-CAS1:\t"+obj1);;
21、 };
22、 };

运行结果:

  1. 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
    2、 2011-12-1823:12:39.843INFOnet.spy.memcached.MemcachedConnection:Connectionstatechangedforsun.nio.ch.SelectionKeyImpl@b09e89;
    3、 Non-CAS2:Michael;
    4、 Non-CAS1:Love;

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

2、 CAS;

程序实例:

1、 packagecom.sinosuperman.memcached;;
2、
3、 importjava.io.IOException;;
4、 importjava.net.InetSocketAddress;;
5、
6、 importnet.spy.memcached.CASValue;;
7、 importnet.spy.memcached.MemcachedClient;;
8、
9、 public****classTest{;
10、 @SuppressWarnings("unchecked");
11、 publicstaticvoidmain(String[]args)throwsIOException{;
12、 MemcachedClientcache=newMemcachedClient(newInetSocketAddress("127.0.0.1",11211));;
13、
14、 cache.set("y",1800,"Love");;
15、
16、 CASValuecasValue1=cache.gets("y");;
17、 CASValuecasValue2=cache.gets("y");;
18、 cache.cas("y",casValue2.getCas(),casValue2.getValue());;
19、
20、 System.out.println("CAS2:\t"+casValue2.getCas());;
21、 System.out.println("Value2:\t"+casValue2.getValue());;
22、
23、 System.out.println("CAS1:\t"+casValue1.getCas());;
24、 System.out.println("Value1:\t"+casValue1.getValue());;
25、 };
26、 };

运行结果:

  1. 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
    2、 2011-12-1823:07:14.541INFOnet.spy.memcached.MemcachedConnection:Connectionstatechangedforsun.nio.ch.SelectionKeyImpl@1621e42;
    3、 CAS2:11;
    4、 Value2:Love;
    5、 CAS1:11;
    6、 Value1:Love;

版权声明:本文为博主原创文章,未经博主允许不得转载。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: