欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

XMemcached发布1.2.0-RC1,支持binary协议

程序员文章站 2022-03-12 11:49:19
...

  XMemcached是一个基于java nio的Memcached Client,正式发布1.2.0-RC1版本。此版本又是一个里程碑版本,开始支持memcached的二进制协议,并添加了几个更有价值的功能。此版本的主要改进如下:

1、支持完整的memcached binary协议。XMemcached现在已经支持memcached的所有文本协议和二进制协议,成为一个比较完整的java client。Memcached的二进制协议带来更好的性能以及更好的可扩展性。在XMemcached中使用二进制协议,你只要添加一行代码:
 XMemcachedClientBuilder builder=....
  builder.setCommandFactory(new BinaryCommandFactory());//此行
 

或者在Spring配置中增加一行配置:

<bean name="memcachedClient2"
		class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
   ......
   <!--采用binary command -->
   <property name="commandFactory">
		   <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean>

</bean>

 

2.支持与hibernate-memcached的集成。Hibernate-memcached是可以将memcached作为hibernate二级缓存的开源项目,它默认采用的是Spymemcached,XMemcached 1.2.0开始提供对它的集成,具体的配置信息参考这里

 

3.兼容JDK5。XMemcached的1.x版本都仅能在jdk6上使用,从1.2.0-RC1开始,XMemcached开始兼容jdk5。当时考虑只支持jdk6是由于nio的Epoll Selector实现是在jdk6上成为默认,而jdk5需要设置环境变量。不过XMemcached 1.2.0-RC1将自动帮你判断是否是linux平台,并且判断是否可以启用epoll,如果可以,那么将在linux平台采用EPollSelectorProvider,这一切对用户来说是透明的。(注意,jdk5的低版本在linux平台仍然是没有epoll实现的)。

 

4.日志从common-logging迁移到slf4j。XMemcached现在必须的两个依赖包分别是slf4jyanf4j(1.0-SNAPSHOT).

 

5.另一个关键性的改进是允许设置连接池。众所周知,nio的client默认一般都是一个连接,传统的阻塞io采用连接池的方式提高效率。但是在典型的高并发场景下,nio的单连接也将遇到瓶颈,此时允许设置连接池将是一个可选的调优手段。XMemcached 1.2.0-RC1支持设置连接池,允许对同一个memcached节点建立多个连接,启用的代码如下:

MemcachedClient mc =....

mc.setConnectionPoolSize(2);

 默认的pool size是1。设置这一数值不一定能提高性能,请依据你的项目的测试结果为准。初步的测试表明只有在大并发下才有提升。设置连接池的一个不良后果就是,同一个memcached的连接之间的数据更新并非同步的,因此你的应用需要自己保证数据更新的原子性(采用CAS或者数据之间毫无关联)。

 

6、简化构建,移除ant构建,简化maven构建,现在只采用maven构建了。借助于wagon-svn这个扩展,可以将svn作为maven仓库,因此xmemcached的构建现在变的非常方便,下载源码后敲入mvn package即可。

 

7.升级yanf4j1.0-SNAPSHOT版本,此版本引入了SocketOption类,方便设置socket选项,并为引入aio做了重构。

 

8、从1.1.3和1.2.0-beta以来的bug fixed.

 

 

欢迎使用和建议。

 

下载地址:

http://code.google.com/p/xmemcached/downloads/list