尊重知识,转载请注明本文来自:编程艺术家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、 };
运行结果:
- 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、 };
运行结果:
- 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;
版权声明:本文为博主原创文章,未经博主允许不得转载。
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: