Posted on 2009-09-09 09:50
dennis 阅读(1727)
评论(2) 编辑 收藏 所属分类:
java 、
my open-source
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现在必须的两个依赖包分别是
slf4j和
yanf4j(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.
升级yanf4j到1.0-SNAPSHOT版本,此版本引入了SocketOption类,方便设置socket选项,并为引入aio做了重构。
8、从1.1.3和1.2.0-beta以来的bug fixed.
欢迎使用和建议。
下载地址:
http://code.google.com/p/xmemcached/downloads/list