zoukankan      html  css  js  c++  java
  • 使用memcachedclientXmemcached与Spring整合

    1 简单介绍
    Xmemcached是一个高性能的基于java nio的memcachedclient。在经过三个RC版本号后。正式公布1.10-final版本号。


    xmemcached特性一览:
    1、高性能
    2、支持完整的memcached文本协议,二进制协议将在1.2版本号实现。
    3、支持JMX,能够通过MBean调整性能參数、动态加入/移除server、查看统计等。
    4、支持client统计
    5、支持memcached节点的动态增减。


    6、支持memcached分布:余数分布和一致性哈希分布。
    7、很多其它的性能调整选项。




    2 与Spring整合
    XMemcached从1.1.2開始。能灵活方便的与Spring Framework整合在一起使用。


    2.1 最简单样例 
    <bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
     
    <property name="servers">
     
    <value>host1:port1 host2:port2</value>
    </property>
    </bean>
    然后在bean中就能够使用memcachedClient了。
    2.2 复杂一点儿的样例
    <bean name="memcachedClient"
    class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
    <property name="servers">
    <value>host1:port1 host2:port2 host3:port3</value>
    </property>
    <property name="weights">
    <list>
    <value>1</value>
    <value>2</value>
    <value>3</value>
    </list>
    </property>
    <property name="sessionLocator">
    <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
    </property>
    <property name="transcoder">
    <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
    </property>
    <property name="bufferAllocator">
    <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
    </property>
    </bean>

    当中各參数的意义:

    參数

    含义

    servers

    server列表。格式:ip:port

    weights

    主机映射:host1相应1号、host2相应2号..

    sessionLocator

    Session

     分配器,有自带的。影响分布式

     

    transcoder

    通信编码方式

    bufferAllocator

    缓冲区分配器


    注:

    默认标准Hash, hash(key) mod server_count (余数分布)
     

    MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("server1:11211 server2:11211 server3:11211")); MemcachedClient mc = builder.build();




    能够改为Consistent Hash(一致性哈希):

    MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("server1:11211 server2:11211 server3:11211")); builder.setSessionLocator(new KetamaMemcachedSessionLocator()); MemcachedClient mc = builder.build();

     

  • 相关阅读:
    基于Dubbo框架构建分布式服务(一)
    大型网站架构系列:消息队列
    Redis Cluster 分区实现原理
    Redis五种数据结构简介
    Java中创建对象的5种方式
    Netty 系列之 Netty 高性能之道
    Java 抽象类与接口
    谈iOS抓包:Mac下好用的HTTP/HTTPS抓包工具Charles
    Web系统大规模并发——电商秒杀与抢购
    [转]MS SQL Server 数据库连接字符串详解
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7102910.html
Copyright © 2011-2022 走看看