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

时间: 2024-11-05 04:50:11

xmemcached发布1.1.2 (权重、noreply、spring集成)的相关文章

xmemcached发布1.3.6

    开源的memcached Java客户端--xmemcached发布1.3.6版本.     主要改进如下:  1.  为MemcachedClientBuilder添加两个新方法用于配置: public void setConnectTimeout(long connectTimeout);  public void setSanitizeKeys(boolean sanitizeKeys);   2.  用于hibernate的XmemcachedClientFactoryd添加了c

xmemcached发布1.3.4

开源的java memcached client-- xmemcached发布1.3.4版本,主要改进如下:   1.修复一个相对严重的bug,在解析二进制协议时如果遇到从服务端返回的错误信息,会导致连接异常断开:如果你没有使用binary协议,不会遇到此问题.建议使用xmemcached并且使用二进制协议的朋友升级到此版本. 2.允许XMemcachedClientFactoryBean配置opTimeout选项. 3.添加RoundRobinMemcachedSessionLocator,轮

xmemcached发布1.0版本

xmemcached发布1.0稳定版,下载地址这里.     相比于1.0-beta版本,这个released版本的主要改进如下: 1.xmemcached跟yanf4j都是默认采用common-logging,你可以使用log4j,也可以默认使用jdk的日志库.1.0添加了log4j的配置和依赖包.log4j的性能比jdk自带的日志库性能好多了. 2.添加了BufferAllocator接口,用于分配ByteBufferWrapper,ByteBufferWrapper顾名思义就是ByteBu

xmemcached发布1.3.3版本——支持touch和GAT

  开源memcached的java客户端xmemcached发布1.3.3,主要改进如下: 1.memcached 1.6添加了不少新特性,具体可以参考<what's new in memcached>(1) (2)这两个帖子.xmemcached将及时跟进这些新特性.1.3.3这个版本实现了二进制协议中新的两个命令touch和GAT(get and touch).这两个功能可以说是千呼万唤始出来,终于可以不用get-set来重新设置数据的超时时间,利用touch或者GAT可以简单地更新数据

xmemcached发布1.10 RC3(附最新测试结果)

在某用户(可能是唯一用户)的反馈和建议下,xmemcached做了不少改进和修正,特此感谢.     XMemcached发布1.10-RC3,这可能是1.10 release前最后一个RC版本,此版本的主要改进: 1.引入XMemcachedClientMBean接口,添加一个新的MBean,主要功能是允许通过JMX动态添加或者移除memcached server.如图: 除了通过JMX之外,也可以通过编程来动态添加或者移除memcachd server节点.例如: XMemcachedCli

xmemcached发布1.10 RC2

xmemcached发布1.10 RC2,这一版本的主要改进如下: 1.修复1.10-RC1以来发现的bug 2.添加对flush_all协议的支持,XMemcachedClient.flushAll方法用以使memcached的缓存数据项失效,这一方法有系列重载方法  void     flushAll()           使cache中所有的数据项失效,如果是连接多个节点的memcached,那么所有的memcached中的数据项都将失效 void     flushAll(long t

xmemcached发布1.0-BETA版

xmemcached发布1.0-beta,从0.60直接到1.0-beta,主要改进如下:1.支持更多协议,在已有协议支持的基础上添加了append.prepend.gets.批量gets.cas协议的支持,具体请查看XMemcachedClient类的实例方法.重点是cas操作,下文将详细描述下. 2.memcached分布支持,支持连接多个memcached server,支持简单的余数分布和一致性哈希分布. 3.0.60版本以来的bug修复.    memcached 1.2.4之后开始支

shiro和spring集成时session管理器超时时间问题

问题描述 shiro和spring集成时session管理器超时时间问题 这是我的配置文件,我配置了并发人数控制和动态权限过滤,然后session超时时间这里也是配置了的,然后并没有什么鸟用,在登录以后获取超时时间也是正常的,但还是1分钟就过期了. <?xml version="1.0" encoding="UTF-8"?> xmlns:util="http://www.springframework.org/schema/util"

一个简单的hibernate与spring集成

下面介绍一下hibernate与spring的集成,这两个框架的集成关键在于 applicationContext.xml文件的配置,其实很简单的,但需要注意的是,导入包 时一定选择导入到webroot/web-inf/lib目录中,而且hibernate一般要在spring 之前导入,因为集成时要用到sessionFactory类, 一.初始化工作:新建一个项目,如(ssh),在此项目中导入对hibernate的支持 ,新建一个表sstest表,有字段id,username,password,