memcahce learning 2# - 客户端调用(Java)

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/

 

 

 

 

你可能感兴趣的:(memcahce learning 2# - 客户端调用(Java))