03、MemCached快速入门:Memcachedclientforjava使用

memcached client for java是另一个memcached的java客户端

http://www.whalin.com/memcached/#download

代码:

(1)MemcachedServer -- memcached的服务器

[java] view plain copy

1、 public****classMemcachedServer{;
2、
3、 privateStringaddress;;
4、 private****intport;;
5、 private****intweight;;
6、
7、 publicMemcachedServer(Stringaddress,intport,intweight){;
8、 this.address=address;;
9、 this.port=port;;
10、 this.weight=weight;;
11、 };
12、
13、 publicStringgetAddress(){;
14、 returnaddress;;
15、 };
16、
17、 public****intgetPort(){;
18、 returnport;;
19、 };
20、
21、 public****intgetWeight(){;
22、 returnweight;;
23、 };
24、
25、 publicStringtoString(){;
26、 returnaddress+":"+port+","+weight;;
27、 };
28、
29、 };

(2)MemcachedException

[java] view plain copy

1、 @SuppressWarnings("serial");
2、 public****classMemcachedExceptionextendsException{;
3、
4、 publicMemcachedException(){;
5、 super();;
6、 };
7、
8、 publicMemcachedException(Throwablet){;
9、 super(t);;
10、 };
11、
12、 publicMemcachedException(Stringerror){;
13、 super(error);;
14、 };
15、
16、 publicMemcachedException(Stringerror,Throwablet){;
17、 super(error,t);;
18、 };
19、
20、 };

(3)PoolDefaultProperties -- memcached池初始化参数

[java] view plain copy

1、 importjava.util.Properties;;
2、
3、 public****classPoolDefaultPropertiesextendsProperties{;
4、
5、 privatestaticfinal****longserialVersionUID=-7630655479181446040L;;
6、
7、 publicPoolDefaultProperties(){;
8、 super();;
9、 initDefault();;
10、 };
11、
12、 private****voidinitDefault(){;
13、 initConn();;
14、 initMainSleep();;
15、 initTCP();;
16、 initFailover();;
17、 initAliveCheck();;
18、 };
19、
20、 protected****voidinitConn(){;
21、 setProperty("initConn","10");;
22、 setProperty("minConn","10");;
23、 setProperty("maxConn","20");;
24、 setProperty("maxIdle",String.valueOf(1000*60*30));;
25、 };
26、
27、 protected****voidinitMainSleep(){;
28、 setProperty("maintSleep",String.valueOf(1000*5));;
29、 };
30、
31、 protected****voidinitTCP(){;
32、 setProperty("nagle","false");;
33、 setProperty("socketTO",String.valueOf(1000*3));;
34、 setProperty("socketConnectTO",String.valueOf(1000*3));;
35、 };
36、
37、 protected****voidinitFailover(){;
38、 setProperty("failover","true");;
39、 setProperty("failback","true");;
40、 };
41、
42、 protected****voidinitAliveCheck(){;
43、 setProperty("aliveCheck","true");;
44、 };
45、
46、 };

(4)MemcachedPool -- memcached池

[java] view plain copy

1、 importjava.lang.reflect.InvocationTargetException;;
2、 importjava.util.Iterator;;
3、 importjava.util.List;;
4、 importjava.util.Properties;;
5、 importjava.util.Set;;
6、
7、 importorg.apache.commons.beanutils.ConvertUtils;;
8、 importorg.apache.commons.beanutils.PropertyUtils;;
9、 importorg.apache.commons.logging.Log;;
10、 importorg.apache.commons.logging.LogFactory;;
11、
12、 importcom.danga.MemCached.SockIOPool;;
13、
14、 public****classMemcachedPool{;
15、
16、 privatestaticfinalLoglogger=LogFactory.getLog(MemcachedPool.class);;
17、
18、 private****staticPropertiesPOOL_DEFAULT_VALUE=newPoolDefaultProperties();;
19、
20、 private****staticMemcachedPoolpool=newMemcachedPool();;
21、
22、 privateMemcachedPool(){};
23、
24、 public****staticMemcachedPoolgetInstance(){;
25、 returnpool;;
26、 };
27、
28、 public****voidinitPool(Listservers)throwsMemcachedException{;
29、 initPool(servers,POOL_DEFAULT_VALUE);;
30、 };
31、
32、 public****voidinitPool(Listservers,Propertiesprops)throwsMemcachedException{;
33、 SockIOPoolsockIOPool=SockIOPool.getInstance();;
34、
35、 //server&weight;
36、 sockIOPool.setServers(getServer(servers));;
37、 sockIOPool.setWeights(getWeight(servers));;
38、
39、
40、 //beanprops;
41、 Setkeys=props.keySet();;
42、 IteratorkeyIter=keys.iterator();;
43、 while(keyIter.hasNext()){;
44、 Stringkey=(String)keyIter.next();;
45、 Stringvalue=props.getProperty(key);;
46、 if(value==null){;
47、 value=POOL_DEFAULT_VALUE.getProperty(key);;
48、 };
49、 try{;
50、 Classtype=PropertyUtils.getPropertyType(sockIOPool,key);;
51、 logger.debug("Type="+type+";Key="+key+";Value="+value);;
52、 Objectval=ConvertUtils.convert(value,type);;
53、 PropertyUtils.setSimpleProperty(sockIOPool,key,val);;
54、 }catch(IllegalAccessExceptione){;
55、 throw****newMemcachedException("InitPoolFail",e);;
56、 }catch(InvocationTargetExceptione){;
57、 throw****newMemcachedException("InitPoolFail",e);;
58、 }catch(NoSuchMethodExceptione){;
59、 throw****newMemcachedException("InitPoolFail",e);;
60、 };
61、 };
62、 sockIOPool.initialize();;
63、 };
64、
65、 privateInteger[]getWeight(Listweigths){;
66、 Integer[]w=newInteger[weigths.size()];;
67、 for(inti=0;i<weigths.size();i++){;
68、 w[i]=weigths.get(i).getWeight();;
69、 };
70、 returnw;;
71、 };
72、
73、 privateString[]getServer(Listservers){;
74、 String[]s=newString[servers.size()];;
75、 for(inti=0;i<servers.size();i++){;
76、 MemcachedServerserver=servers.get(i);;
77、 s[i]=server.getAddress()+":"+server.getPort();;
78、 };
79、 returns;;
80、 };
81、
82、
83、 };

(5)MemcachedCli -- memcached操作客户端(只有set,get方法)

[java] view plain copy

1、 importjava.util.Date;;
2、 importjava.util.Iterator;;
3、 importjava.util.Map;;
4、 importjava.util.Set;;
5、
6、 importcom.danga.MemCached.MemCachedClient;;
7、
8、 public****classMemcachedCli{;
9、
10、 private****staticMemcachedCliunique=newMemcachedCli();;
11、
12、 privateMemcachedCli(){;
13、 init();;
14、 };
15、
16、 public****staticMemcachedCligetInstance(){;
17、 returnunique;;
18、 };
19、
20、 privateMemCachedClientclient=newMemCachedClient();;
21、
22、 private****voidinit(){;
23、 client.setPrimitiveAsString(true);;
24、 client.setCompressEnable(true);;
25、 client.setCompressThreshold(4*1024);;
26、 };
27、
28、 public****booleanset(Stringkey,Objectvalue){;
29、 returnclient.set(key,value);;
30、 };
31、
32、 public****booleanset(Stringkey,Objectvalue,Dateexpired){;
33、 returnclient.set(key,value,expired);;
34、 };
35、
36、 publicObjectget(Stringkey){;
37、 returnclient.get(key);;
38、 };
39、
40、 public****voidprintStat(){;
41、 Mapstats=client.stats();;
42、 Setkeys=stats.keySet();;
43、 IteratorkeyIter=keys.iterator();;
44、 while(keyIter.hasNext()){;
45、 Stringkey=(String)keyIter.next();;
46、 Objectvalue=stats.get(key);;
47、 System.out.println(key+"="+value);;
48、 };
49、 };
50、
51、 };

(6)MCTest -- 简单测试

[java] view plain copy

1、 importjava.util.ArrayList;;
2、 importjava.util.List;;
3、
4、 public****classMCTest{;
5、
6、 publicstaticvoidmain(String[]args){;
7、 try{;
8、 MemcachedServerserver=newMemcachedServer("localhost",11211,1);;
9、 Listservers=newArrayList();;
10、 servers.add(server);;
11、 MemcachedPoolpool=MemcachedPool.getInstance();;
12、 pool.initPool(servers);;
13、 MemcachedCliclient=MemcachedCli.getInstance();;
14、 Stringvalue=(String)client.get("test1");;
15、 System.out.println("value="+value);;
16、 client.set("test1","value1");;
17、 value=(String)client.get("test1");;
18、 System.out.println("value="+value);;
19、 client.printStat();;
20、 }catch(MemcachedExceptione){;
21、 e.printStackTrace();;
22、 };
23、 };
24、
25、 };

测试运行结果,其中有memcached client包的调试信息:

com.danga.MemCached.MemCachedClient Sun Nov 29 00:23:54 CST 2009 - ++++ retrieving object and stuffing into a string.
value=value1
com.danga.MemCached.MemCachedClient Sun Nov 29 00:23:54 CST 2009 - ++++ storing data as a string for key: test1 for class: java.lang.String
com.danga.MemCached.MemCachedClient Sun Nov 29 00:23:54 CST 2009 - ++++ memcache cmd (result code): set test1 0 0 6
(STORED)
com.danga.MemCached.MemCachedClient Sun Nov 29 00:23:54 CST 2009 - ++++ data successfully stored for key: test1
com.danga.MemCached.MemCachedClient Sun Nov 29 00:23:54 CST 2009 - ++++ retrieving object and stuffing into a string.
value=value1
localhost:11211={bytes_written=587, connection_structures=11, bytes=52, total_items=2, total_connections=21, uptime=284045336, pid=1416, get_hits=3, curr_items=1, version=1.2.1, cmd_get=4, time=1259425433, pointer_size=32, cmd_set=2, limit_maxbytes=67108864, bytes_read=162, curr_connections=10, get_misses=1}

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

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