xmemcached发布1.1.2 (权重、noreply、spring集成)

简介:
XMemcached发布1.1.2版本,这一版本仍然是1.1.0版本以来的改进版本,主要的改进如下:

1.支持设置memcached 节点权重,权重高的负载相应比较大。

2.为部分协议添加 noreply选项,memcached 1.2.5引入了noreply支持,部分文本协议(如存储,删除,incr/decr等)允许附加设置一个noreply,表示客户端不要求memcached应答。这一特性利于批量处理。

3.支持与 spring框架的集成

4.添加 verbosity协议,这个协议用于让客户端设置memcached的日志输出级别。

5.一些细节改进。XMemcached从0.5开始就有重连机制,在连接意外断开的情况下会不断地自动重连,不过间隔是10秒,现在改成将间隔缩小为0秒以便客户端能及时连接。改进了JMX支持,可以通过JMX查看节点权重和动态设置节点权重。

6.BUG修复,包括:Issue 35、Issue 36、Issue 37、Issue 38等,具体请看 这里

7.去除了对spy-2.4.jar依赖,现在序列化部分已经不再需要spymemcached的这个jar包。


项目主页: http://code.google.com/p/xmemcached/
下载地址: http://code.google.com/p/xmemcached/downloads/list
wiki地址: http://code.google.com/p/xmemcached/w/list


    下面是关于特性的详细说明,首先是权重的使用,看例子:
    MemcachedClientBuilder builder  =   new XMemcachedClientBuilder(AddrUtil.getAddresses( " localhost:12000 localhost:12001 " ), new   int []{ 1 , 3 });
    MemcachedClient memcachedClient
= builder.build();
   
    现在的 XMemcachedClientBuilder允许传入了两个参数,一个是InetSocketAddress组成的列表,一个是权重的数组,权重数组的元素与列表中的地址一一对应,例如这里就是将"localhost:12000"节点的权重设置为1,而将"localhost:12001"的权重设置为3。同样在XMemcachedClientMBean中添加了两个新的方法:

    
public   void  addOneServerWithWeight(String server,  int  weight)
            
throws  IOException;


    
/**
     * Set a memcached server's weight
     * 
     * 
@param  server
     * 
@param  weight
     
*/
    
public   void  setServerWeight(String server,  int  weight);

    用于动态添加和修改节点的权重。

    其次,为了支持 noreply选项,MemcachedClient接口引入了系列xxxWithNoReply方法,例如
public   abstract   void  setWithNoReply( final  String key,  final   int  exp,
            
final  Object value)  throws  InterruptedException, MemcachedException;

    
public   abstract   < T >   void  setWithNoReply( final  String key,  final   int  exp,
            
final  T value,  final  Transcoder < T >  transcoder)
            
throws  InterruptedException, MemcachedException;

public   abstract   void  addWithNoReply( final  String key,  final   int  exp,
            
final  Object value)  throws  InterruptedException, MemcachedException;
public   abstract   void  replaceWithNoReply( final  String key,  final   int  exp,
            
final  Object value)  throws  InterruptedException, MemcachedException;
public   void  deleteWithNoReply( final  String key)
            
throws  InterruptedException, MemcachedException;

   完整的列表请看changelog.txt, noreply系列方法非常适合于批量处理,比之需要等待memcached应答的效率上提升很多。

   第三,与spring的集成,通过XMemcachedClientFactoryBean可以很方便地与spring框架集成,最简单的配置如下:
   < bean  name ="memcachedClient"
        class
="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" >
        
< property  name ="servers" >
            
< value > localhost:12000 localhost:12001 </ value >
        
</ property >
    
</ bean >
  
   只要设置servers属性,那么就可以在任何需要的地方引用memcachedClient这个Bean.更完整的配置参考 wiki

   第四,引入了对verbosity协议的支持,通过两个新方法:
     public   void  setLoggingLevelVerbosity(InetSocketAddress address,  int  level)
            
throws  TimeoutException, InterruptedException, MemcachedException;

    
public   void  setLoggingLevelVerbosityWithNoReply(InetSocketAddress address,
            
int  level)  throws  InterruptedException, MemcachedException;

   
   其中的level就是日志级别。请注意你的memcached版本是否支持这一协议。

    1.1.2是一个承前启后的版本,按俺的计划应该还有个1.1.3(专注性能改进和优化),之后才是实现了二进制协议的1.2.0。俺非常希望能有任何人给出任何建议和bug反馈。

文章转自庄周梦蝶  ,原文发布时间2009-06-21

目录
相关文章
|
19天前
|
人工智能 Java API
支持 40+ 插件,Spring AI Alibaba 简化智能体私有数据集成
通过使用社区官方提供的超过 20 种 RAG 数据源和 20 种 Tool Calling 接口,开发者可以轻松接入多种外部数据源(如 GitHub、飞书、云 OSS 等)以及调用各种工具(如天气预报、地图导航、翻译服务等)。这些默认实现大大简化了智能体的开发过程,使得开发者无需从零开始,便可以快速构建功能强大的智能体系统。通过这种方式,智能体不仅能够高效处理复杂任务,还能适应各种应用场景,提供更加智能、精准的服务。
|
22天前
|
人工智能 自然语言处理 Java
Spring 集成 DeepSeek 的 3大方法(史上最全)
DeepSeek 的 API 接口和 OpenAI 是兼容的。我们可以自定义 http client,按照 OpenAI 的rest 接口格式,去访问 DeepSeek。自定义 Client 集成DeepSeek ,可以通过以下步骤实现。步骤 1:准备工作访问 DeepSeek 的开发者平台,注册并获取 API 密钥。DeepSeek 提供了与 OpenAI 兼容的 API 端点(例如),确保你已获取正确的 API 地址。
Spring 集成 DeepSeek 的 3大方法(史上最全)
|
2月前
|
监控 Java Nacos
使用Spring Boot集成Nacos
通过上述步骤,Spring Boot应用可以成功集成Nacos,利用Nacos的服务发现和配置管理功能来提升微服务架构的灵活性和可维护性。通过这种集成,开发者可以更高效地管理和部署微服务。
308 17
|
2月前
|
人工智能 安全 Dubbo
Spring AI 智能体通过 MCP 集成本地文件数据
MCP 作为一款开放协议,直接规范了应用程序如何向 LLM 提供上下文。MCP 就像是面向 AI 应用程序的 USB-C 端口,正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一个将 AI 模型连接到不同数据源和工具的标准化方法。
|
2月前
|
缓存 安全 Java
Spring Boot 3 集成 Spring Security + JWT
本文详细介绍了如何使用Spring Boot 3和Spring Security集成JWT,实现前后端分离的安全认证概述了从入门到引入数据库,再到使用JWT的完整流程。列举了项目中用到的关键依赖,如MyBatis-Plus、Hutool等。简要提及了系统配置表、部门表、字典表等表结构。使用Hutool-jwt工具类进行JWT校验。配置忽略路径、禁用CSRF、添加JWT校验过滤器等。实现登录接口,返回token等信息。
617 12
|
2月前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
97 8
|
3月前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
196 5
|
4月前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
134 5
|
4月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
101 1
|
16天前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
63 12

热门文章

最新文章