xmemcached发布1.0版本
2023-03-14 10:26:56 时间
xmemcached发布1.0稳定版,下载地址这里。
相比于1.0-beta版本,这个released版本的主要改进如下:
1、xmemcached跟yanf4j都是默认采用common-logging,你可以使用log4j,也可以默认使用jdk的日志库。1.0添加了log4j的配置和依赖包。log4j的性能比jdk自带的日志库性能好多了。
2、添加了BufferAllocator接口,用于分配ByteBufferWrapper,ByteBufferWrapper顾名思义就是ByteBuffer的包装接口,因此BufferAllocator就是ByteBuffer的分配器,有两个实现:SimpleBufferAllocator,直接调用ByteBuffer.allocate(capacity)方法,不做任何缓存;一个是CachedBufferAllocator,采用ThreadLocal缓存ByteBuffer,避免重复创建,如果你对mina熟悉的话,这个概念没什么特别的。默认xmemcached采用的是SimpleBufferAllocator,你可以通过XMemcachedClient的构造方法设置想要采用的BufferAllocator:
经过测试,采用CachedBufferAllocator并没有带来显著的性能提升,需要更多测试,慎用。
3、允许设置网络参数,在多个memcached节点的情况下,强烈推荐将网络层的读线程数(处理OP_READ)设置为接近节点数(具体还是要看场景测试,因为读线程数本质上是启动了一个线程池来处理读事件,太大也会影响效率):
使用方法:
相比于1.0-beta版本,这个released版本的主要改进如下:
1、xmemcached跟yanf4j都是默认采用common-logging,你可以使用log4j,也可以默认使用jdk的日志库。1.0添加了log4j的配置和依赖包。log4j的性能比jdk自带的日志库性能好多了。
2、添加了BufferAllocator接口,用于分配ByteBufferWrapper,ByteBufferWrapper顾名思义就是ByteBuffer的包装接口,因此BufferAllocator就是ByteBuffer的分配器,有两个实现:SimpleBufferAllocator,直接调用ByteBuffer.allocate(capacity)方法,不做任何缓存;一个是CachedBufferAllocator,采用ThreadLocal缓存ByteBuffer,避免重复创建,如果你对mina熟悉的话,这个概念没什么特别的。默认xmemcached采用的是SimpleBufferAllocator,你可以通过XMemcachedClient的构造方法设置想要采用的BufferAllocator:
public XMemcachedClient(BufferAllocator allocator) throws IOException;
//其他重载构造函数
//其他重载构造函数
![](http://www.blogjava.net/Images/dot.gif)
经过测试,采用CachedBufferAllocator并没有带来显著的性能提升,需要更多测试,慎用。
3、允许设置网络参数,在多个memcached节点的情况下,强烈推荐将网络层的读线程数(处理OP_READ)设置为接近节点数(具体还是要看场景测试,因为读线程数本质上是启动了一个线程池来处理读事件,太大也会影响效率):
//XMemcachedClient的getDefaultConfiguration静态方法,获取默认配置
public static Configuration getDefaultConfiguration() {
Configuration configuration = new Configuration();
configuration.setTcpRecvBufferSize(TCP_RECV_BUFF_SIZE);
configuration.setSessionReadBufferSize(READ_BUFF_SIZE);
configuration.setTcpNoDelay(TCP_NO_DELAY);
configuration.setReadThreadCount(READ_THREAD_COUNT);
return configuration;
}
public static Configuration getDefaultConfiguration() {
Configuration configuration = new Configuration();
configuration.setTcpRecvBufferSize(TCP_RECV_BUFF_SIZE);
configuration.setSessionReadBufferSize(READ_BUFF_SIZE);
configuration.setTcpNoDelay(TCP_NO_DELAY);
configuration.setReadThreadCount(READ_THREAD_COUNT);
return configuration;
}
使用方法:
Configuration conf=XMemcachedClient.getDefaultConfiguration();
//设置读线程数为节点数,更多设置方法请参见Configuration类
conf.setReadThreadCount(5);
XMemcachedClient mc = new XMemcachedClient(
conf,new CachedBufferAllocator());
mc.addServer(ip1, port1);
mc.addServer(ip2, port2);
mc.addServer(ip3,port3);
mc.addServer(ip4,port4);
mc.addServer(ip5,port5);
//设置读线程数为节点数,更多设置方法请参见Configuration类
conf.setReadThreadCount(5);
XMemcachedClient mc = new XMemcachedClient(
conf,new CachedBufferAllocator());
mc.addServer(ip1, port1);
mc.addServer(ip2, port2);
mc.addServer(ip3,port3);
mc.addServer(ip4,port4);
mc.addServer(ip5,port5);
4、修复一系列发现的bug,如Command返回结果需要设置成原子引用、更严格的方法参数检查、提示信息的友好、日志的优化、操作超时的时候取消操作等,重构部分代码
文章转自庄周梦蝶 ,原文发布时间2009-03-13
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的