Memcached Client(基于传统阻塞io)、Spymemcached(基于java nio)、Xmemcached(基于java nio)
一 、Xmemcached
1、简介
介绍
http://blog.sina.com.cn/s/blog_41194bbe0100dzz5.html
下载 http://code.google.com/p/xmemcached/
2、测试
下载测试版本为: xmemcached-1.3.3-bin-with-dependencies.tar.gz
源码:xmemcached-1.3.3-src.tar.gz
测试需要jar包:xmemcached-1.3.3.jar,slf4j-log4j12.jar,slf4j-api-1.5.6.jar,log4j-1.2.15.jar
测试代码,TestMemcached.java
package com; import java.io.IOException; import java.util.concurrent.TimeoutException; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.MemcachedClientBuilder; import net.rubyeye.xmemcached.XMemcachedClientBuilder; import net.rubyeye.xmemcached.exception.MemcachedException; import net.rubyeye.xmemcached.utils.AddrUtil; /** * @author Administrator * */ public class TestMemcached { public static void main(String[] args) throws IOException { MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil .getAddresses("localhost:11211")); MemcachedClient memcachedClient = builder.build(); try { memcachedClient.set("hello", 0, "Hello,xmemcached"); String value = memcachedClient.get("hello"); System.out.println("hello=" + value); memcachedClient.delete("hello"); value = memcachedClient.get("hello"); System.out.println("hello=" + value); } catch (MemcachedException e) { System.err.println("MemcachedClient operation fail"); e.printStackTrace(); } catch (TimeoutException e) { System.err.println("MemcachedClient operation timeout"); e.printStackTrace(); } catch (InterruptedException e) { // ignore } try { // close memcached client memcachedClient.shutdown(); } catch (IOException e) { System.err.println("Shutdown MemcachedClient fail"); e.printStackTrace(); } } }
注:可参考User_Guide_zh(xmemcached-1.3.3-bin-with-dependencies/xmemcached-1.3.3/User_Guide_zh)
二、Spymemcached
1、简介
http://code.google.com/p/spymemcached/
2、测试
下载测试版本为spymemcached-2.7.jar
TestSPYMemcached.java
package com.memcache; import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import net.spy.memcached.AddrUtil; import net.spy.memcached.MemcachedClient; /** * @author Administrator * */ public class TestSPYMemcached { public static void main(String[] args){ MemcachedClient c; // test 1(one server) try { c = new MemcachedClient( new InetSocketAddress("localhost", 11211)); // Store a value (async) for one hour c.set("someKey", 3600, "spymemcached test."); // Retrieve a value (synchronously). Object myObject=c.get("someKey"); System.out.println("get value from cache : "+myObject); c.shutdown(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Get a memcached client connected to several servers try { MemcachedClient c1=new MemcachedClient( AddrUtil.getAddresses("server1:11211 server2:11211")); c1.set("someKey1", 3, "memcache in asy."); Object myObj=null; Future<Object> f=c1.asyncGet("someKey1"); // Try to get a value, for up to 5 seconds, and cancel if it doesn't return myObj=f.get(5, TimeUnit.SECONDS); System.out.println("get asy cache value : "+myObj); c1.shutdown(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch(TimeoutException e) { // Since we don't need this, go ahead and cancel the operation. This // is not strictly necessary, but it'll save some work on the server. //f.cancel(false); // Do other timeout related stuff } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
三、Java Memcached Client
1、简介
下载:https://github.com/gwhalin/Memcached-Java-Client
2、测试
java_memcached-release_2.6.1.jar
package com.memcache; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; /** * @author Administrator * */ public class TestJMemcached { public static void main(String[] args) { MemCachedClient c = new MemCachedClient(); String[] servers = { "127.0.0.1:11211" }; SockIOPool pool = SockIOPool.getInstance(); pool.setMinConn(10); pool.setMaxConn(255); pool.setMaxIdle(60 * 60 * 1000); pool.setServers(servers); pool.initialize(); c.set("someKey", "test java mem client."); Object myObject = c.get("someKey"); System.out.println("java mem client : " + myObject.toString()); } }
结果比较参考:
http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html
svn :
http://xmemcached.googlecode.com/svn/trunk/benchmark/