XMemcached介绍(发布1.10-RC1)

转自http://www.iteye.com/topic/343161

xmemcached 发布1.0-beta ,从0.60直接到1.0-beta,主要改进如下:
1、支持更多协议,在已有协议支持的基础上添加了append、prepend、gets、批量gets、cas协议的支持,具体请查看XMemcachedClient类的实例方法。重点是cas操作。
2、memcached分布支持,支持连接多个memcached server,支持简单的余数分布和一致性哈希分布。
3、0.60版本以来的bug修复。

更多信息参考这里

 

 

1、xmemcached是什么?

 

基于java nio实现的memcached客户端API。

实际上是基于我实现的一个简单nio框架  http://code.google.com/p/yanf4j/ 的基础上实现的(目前是基于yanf4j 0.54),序列化机制直接挪用spymemcached的Transcoder。

性 能方面与spymemcached相比各有优势,spymemcached在windows和linux两个平台上的效率差异很大(特别是容器类大对象的 读写上),而xmemcached就没有这个问题,如果你的get操作远远多于存储操作,那么xmemcached对于get的优化在并发下的效果更加明 显。

当 前1.0-beta版本,支持memcached的分布式(余数哈希和一致性哈希算法)。目前已经支持get、set、add、replace、cas、 append、prepend、批量get/gets、delete、incr、decr、version这几个协议。API为阻塞模型,而非 spymemcached的异步模型,异步模型在批处理的时候有优势,但是阻塞模型在编程难度和使用上会容易很多。

后续计划:

1.0 正式稳定版

1.1 着重性能优化

 

 

 

 

2、为什么叫xmemcached?

因为我在厦门(XM)混饭......

3、xmemcached的下载和使用

项目主页:http://code.google.com/p/xmemcached/

下载地址:http://code.google.com/p/xmemcached/downloads/list

wiki地址:http://code.google.com/p/xmemcached/w/list

下载的压缩包中包括了依赖库、源码和打包后的jar,放到项目的lib目录下即可使用。

 

使用:

 

Java代码   <embed type="application/x-shockwave-flash" width="14" height="15" src="/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%20import%20net.rubyeye.xmemcached.XMemcachedClient%3B%0A%20%20%20......%0A%20%20%20......%0A%20%20%20%2F%2FXMemcachedClient%E6%98%AF%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%A2%AB%E5%A4%9A%E7%BA%BF%E7%A8%8B%E4%BD%BF%E7%94%A8%0A%20%20%20XMemcachedClient%20client%3D%20new%20XMemcachedClient(ip%2C%20port)%3B%0A%20%20%20%2F%2F%E5%AD%98%E5%82%A8%E6%93%8D%E4%BD%9C%0A%20%20%20if%20(!client.set(%22hello%22%2C%200%2C%20%22dennis%22))%7B%0A%20%20%20%20%20%20%20%20System.err.println(%22set%20error%22)%3B%0A%20%20%20%7D%0A%20%20%20client.add(%22hello%22%2C%200%2C%20%22dennis%22)%3B%0A%20%20%20client.replace(%22hello%22%2C%200%2C%20%22dennis%22)%3B%0A%0A%20%20%20%2F%2Fget%E6%93%8D%E4%BD%9C%0A%20%20%20String%20name%3D(String)client.get(%22hello%22)%3B%0A%20%20%20%0A%20%20%20%2F%2F%E6%89%B9%E9%87%8F%E8%8E%B7%E5%8F%96%0A%20%20%20List%3CString%3E%20keys%3Dnew%20ArrayList%3CString%3E()%3B%0A%20%20%20keys.add(%22hello%22)%3B%0A%20%20%20keys.add(%22test%22)%3B%0A%20%20%20Map%3CString%2CObject%3E%20map%3Dclient.get(keys)%3B%0A%0A%20%20%20%2F%2Fdelete%E6%93%8D%E4%BD%9C%0A%20%20%20if%20(!client.delete(%22hello%22%2C1000))%7B%0A%20%20%20%20%20%20%20%20System.err.println(%22delete%20error%22)%3B%0A%20%20%20%7D%20%0A%0A%20%20%20%2F%2Fincr%2Cdecr%E6%93%8D%E4%BD%9C%0A%20%20%20client.incr(%22a%22%2C4)%3B%0A%20%20%20client.decr(%22a%22%2C4)%3B%0A%0A%20%20%20%2F%2F%E6%9F%A5%E7%9C%8Bmemcached%E7%89%88%E6%9C%AC%0A%20%20%20String%20version%3Dclient.version()%3B%0A%20%20%20%20%0A%20%20%20client.shutdown()%3B%0A%20%20%20" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
  1. import  net.rubyeye.xmemcached.XMemcachedClient;  
  2.   ......  
  3.   ......  
  4.   //XMemcachedClient是线程安全的,可以被多线程使用   
  5.   XMemcachedClient client= new  XMemcachedClient(ip, port);  
  6.   //存储操作   
  7.   if  (!client.set( "hello" 0 "dennis" )){  
  8.        System.err.println("set error" );  
  9.   }  
  10.   client.add("hello" 0 "dennis" );  
  11.   client.replace("hello" 0 "dennis" );  
  12.   
  13.   //get操作   
  14.   String name=(String)client.get("hello" );  
  15.     
  16.   //批量获取   
  17.   List<String> keys=new  ArrayList<String>();  
  18.   keys.add("hello" );  
  19.   keys.add("test" );  
  20.   Map<String,Object> map=client.get(keys);  
  21.   
  22.   //delete操作   
  23.   if  (!client.delete( "hello" , 1000 )){  
  24.        System.err.println("delete error" );  
  25.   }   
  26.   
  27.   //incr,decr操作   
  28.   client.incr("a" , 4 );  
  29.   client.decr("a" , 4 );  
  30.   
  31.   //查看memcached版本   
  32.   String version=client.version();  
  33.      
  34.   client.shutdown();  
  35.     
 

 

 


    测试所用类下载

你可能感兴趣的:(多线程,编程,linux,Google,memcached)