在某用户(可能是唯一用户)的反馈和建议下,xmemcached做了不少改进和修正,特此感谢。
XMemcached发布1.10-RC3,这可能是1.10 release前最后一个RC版本,此版本的主要改进:
1、引入XMemcachedClientMBean接口,添加一个新的MBean,主要功能是允许通过JMX
动态添加或者移除memcached server。如图:
除了通过JMX之外,也可以通过编程来动态添加或者移除memcachd server节点。例如:
XMemcachedClient client
//添加server
client.addServer("192.168.111.222:11211 192.168.111.221:11211");
//移除
client.removeServer("192.168.111.222:11211 192.168.111.221:11211");
2、引入新的cas重载方法,允许用户自主传入GetsResponse(gets协议的返回结果),而不需要xmemcached去自动获取首次gets结果。
<T> boolean
cas(java.lang.String key, GetsResponse<T> getsReponse, CASOperation<T> operation)
<T> boolean
cas(java.lang.String key, GetsResponse<T> getsReponse, CASOperation<T> operation)
3、重构和修改bug等,重命名transcoder包防止与spymemcached冲突,更多单元测试和相应重构。
4、附带最新的测试结果
测试环境:
服务端:memcached server跑在4核,4G内存的linux机器上,linux内核是2.6.9-55。 memcached启动参数:memcached -p 12000 -m 2048 -d
客户端:跑在8核,16G内存的linux机器上,内核是2.6.9-67。xmemcached版本是1.10-RC3,spymemcached的版本是2.3.1,两者都是默认配置。
测试用例: key和value都是100个字节的字符串,启动N个线程并发地操作同一个memcached client,进行set、get、delete操作,各操作总次数均在100万次以上,最后统计TPS。
具体结果请看下面
结果说明:
图片采用jfreechart生成,spymemcached在100个并发及以上,get操作无法设置超时时间导致抛出很多超时异常,因此无法给出有价值的数据。
下载地址在
这里