高性能Java memcached客户端——Xmemcached发布2.0.0版本,主要改进如下:
- 性能优化,在测试中文本协议实现有接近10%的性能提升。
- 批量获取key如果包含相同的key,会缓存反序列化后的对象,减少重复反序列化的CPU开销。
- 修复getStats没办法获取cache dump的Bug,感谢machao9email。
- 修复ONE_AT_A_TIME没有正确处理无符号数的Bug,感谢spudone。
- 使用纳秒时间戳作为namespace值,避免高并发下的namespace值冲突。
Maven依赖:
<dependency>
<groupId>com.googlecode.xmemcached</groupId>
<artifactId>xmemcached</artifactId>
<version>2.0.0</version>
</dependency>
Spring + Xmemcached
<pre name="code" class="java"> <bean name="memcachedClient"
class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
<property name="servers">
<!-- 服务器列表,格式:(ip:端口 ip:端口),多个以空格分割 -->
<value>10.0.1.75:12000 10.0.1.76:12000 10.0.1.77:12000</value>
</property>
<!-- 和servers对应的节点的权重,weights是用来调节Memcached的负载,设置的权重越高,该Memcached节点存储的数据将越多,所承受的负载越大。 -->
<property name="weights">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<!-- nio连接池大小,默认一个Memcached节点只有一个连接池,通常条件是没有问题的。但是在典型的高并发环境下,nio的单连接也会遇到性能瓶颈。可通过调整连接池数量,<br>
当建立了多个连接到同一个Memcached节点,由于连接之间是不同步的,因此你的应用需要自己保证数据更新的同步 -->
<property name="connectionPoolSize">
<value>1</value>
</property>
<!-- 与服务器节点个数一致,密码不允许有空格 -->
<property name="authInfoMap">
<map>
<entry key-ref="serverA">
<