`
zhaohaolin
  • 浏览: 983842 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java nio的memcached客户端--xmemcached

阅读更多
2010-11-06 02:16

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代码 复制代码
  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.     

xmemcached与spymemcached的对比

1、xmemcached比spymemcached有更好的性能表现,在get、set、delete、multi-gets等操作的测试中都远远超过或者接近spymemcached。
   xmemcached在win32和linux两个平台上都有极佳的性能表现。

2、xmemcached支持动态地添加或者移除memcached server,可以通过编程或者JMX来做到。

3、xmemcached支持JMX,可以通过jmx调整性能参数、添加/移除memcached节点、查看统计

4、xmemcached有客户端统计,可以统计xmemcached客户端的各种操作的总次数

5、xmemcached允许调整更多的网络层参数和优化选项.

6、xmemcached暂未支持二进制协议,计划在1.2版本中实现。

7、xmemcached的API模型是同步的,而spymemcached的API模型是异步模型,同步模型对应用编程来说更容易使用和直观。

 

8、xmemcached的序列化机制,是使用了spymemcached的序列化机制,并做了部分改造。

 

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

Java memcached 客户端——XMemcached 发布1.2.5版本,这是1.2的最后一个小版本,主要的改进如下:

 

1、合并yanf4j到xmemcached,目前只是简单的源码合并,以及去除了不需要的udp支持。因此从1.2.5开始,xmemcached 不再依赖yanf4j,仅依赖slf4j

 

2、支持SASL验证。memcached 1.4.3新增了SASL授权特性,启用了SASL的memcached会要求客户端进行授权验证,否则将拒绝请求,对于需要验证的用户来说是个可选的特性,关于memcached的SASL支持更多请看这里 Xmemcached 1.2.5开始支持客户端的SASL验证,一个典型的使用例子如下:

Java代码 复制代码
  1. MemcachedClientBuilder builder = new XMemcachedClientBuilder(   
  2.                                  AddrUtil.getAddresses( "localhost:11211" ));   
  3. builder.addAuthInfo(AddrUtil.getOneAddress( "localhost:11211" ), AuthInfo   
  4.                                  .typical( "cacheuser" , "123456" ));   
  5. // Must use binary protocol   
  6. builder.setCommandFactory( new BinaryCommandFactory());   
  7. MemcachedClient client=builder.build();  

 

3、加快MemcachedClient.shutdown()方法的速度,应用可以更快地关闭xmemcached。

 

4、完善中文用户指南 ,添加客户端分布和SASL验证两节。

 

更多信息请参见wiki和changelog

 

XMemcached是一个基于java nio的memcached 客户端

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

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

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

分享到:
评论

相关推荐

    Java的开源高性能memcached客户端XMemcached.zip

    Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。它的主要特点: 高性能,稳定可靠,已经在众多公司的众多项目里得到应用。 功能完备:客户端分布式、权重、最新最完整的协议支持。 ...

    memcached客户端(三种客户端)

    Memcached的java客户端已经存在三种了:官方提供的基于传统阻塞io由Greg Whalin维护的客户端;Dustin Sallings实现的基于java nio的Spymemcached;XMemcached

    memcached的三种java客户端jar

    Memcached的java客户端已经存在三种了: 1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端。 较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。 2.spymemcached,支持异步,单线程的memcached客户端...

    xmemcached-1.2.4源码

    xmemcached-1.2.4的官方源码。 xmemcached XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based (using my opensource nio framework :yanf4j), ...

    Xmemcached测试实例

    XMemcached是基于 java nio的Memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞 IO为了提高效率,需要 创建一定数量的连接形成连接池,而 nio...

    Xmemcached用户指南

    Memcached的java客户端已经存在两个了:官方提供的基于传统阻塞io由Greg Whalin维护的客户端、Dustin Sallings实现的基于java nio的Spymemcached。另外还有一些在此基础上的改进版本。相比于这些客户端,XMemcached...

    xmemcached:高性能,易于使用的Java多线程memcached客户端

    介绍XMemcached是Java中的一种高性能,易于使用的阻塞多线程memcached客户端。 它是基于nio的,并且经过了精心设计,以实现最佳性能。快速开始:有助于源代码并将其签出到本地计算机。 进行更改并创建拉取请求。 ...

    strom-xmemcached:Strom版Xmemcached客户端

    XMemcached 是一个高性能、易用的 Java 阻塞多线程 memcached 客户端。 它基于 nio 并经过精心设计以获得最佳性能。 ##新闻和下载 。 Maven 依赖: &lt;groupId&gt;com.googlecode.xmemcached&lt;/groupId&gt; ...

    Xmemcached 缓存开源项目源码及API

    基于java nio实现的高性能可扩展的memcached客户端。虽然Java的memcached库已经很多,但是这些Java开源memcached库并没有一个是基于NIO框架编写,因此并不能够充分发挥Java NIO的性能优势.... xmemcached的项目主页...

    spring-xmemcached

    需要xmemcached-1.2.5+spring-2.5.6 class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"&gt; ${XMemcached_servers} &lt;!-- server's weights --&gt; ...

    javaweb项目常用jar包

    JavaWeb的jar包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.1.jar ...xmemcached-provider-3.5.0.jar xmlbeans-2.6.0.jar xom-1.1.jar xpp3_min-1.1.4c.jar xstream-1.3.1.jar xwork-core-2.3.20.jar

    XMemcached的演示工程

    请问一下 目前 xmemcached 执行的jdk版本是多少? 目前仅兼容到1.5,1.4不兼容;如果需要,你可以自己编译打包一个版本。 从我的角度,不推荐在1.4上使用nio,nio在1.4上的BUG很多。 这个包是我做的演示工程。

Global site tag (gtag.js) - Google Analytics