我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > Spring集成XMemcached
总共48087条微博

动态微博

查看: 2457|回复: 0

Spring集成XMemcached

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-02-04 13:32:06 |只看该作者 |倒序浏览
    一、Memcached Client简要介绍
    Memcached Client目前有3种:
    Memcached Client for java
    SpyMemcached
    XMemcached


    这三种Client一直存在各种争议:
    Memcached Client for Java 比 SpyMemcached更稳定、更早、更广泛;
    SpyMemcached 比 Memcached Client for Java更高效;
    XMemcached 比 SpyMemcache并发效果更好。


    用数据来说话,参考官方性能对比:
    Memcached Client for Java:https://github.com/gwhalin/Memcached-Java-Client/wiki/PERFORMANCE
    XMemcached:http://xmemcached.googlecode.com ... mark/benchmark.html


    二、XMemcached特性
    XMemcached特性:
    高性能
    支持完整的memcached文本协议,二进制协议。
    支持JMX,可以通过MBean调整性能参数、动态添加/移除server、查看统计等。
    支持客户端统计
    支持memcached节点的动态增减。
    支持memcached分布:余数分布和一致性哈希分布。
    更多的性能调整选项。
    四、XMemcached与spring集成
    memcached.properties做基本配置:
    1. #连接池大小即客户端个数  
    2. memcached.connectionPoolSize= 50  
    3. #server1  
    4. memcached.server1.host= 127.0.0.1
    5. memcached.server1.port= 12000  
    6. memcached.server1.weight= 4  
    复制代码
    XML配置文件:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:mvc="http://www.springframework.org/schema/mvc"
    4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5.         xmlns:context="http://www.springframework.org/schema/context"
    6.         xmlns:aop="http://www.springframework.org/schema/aop"
    7.         xmlns:tx="http://www.springframework.org/schema/tx"
    8.         xmlns:p="http://www.springframework.org/schema/p"
    9.         xmlns:cache="http://www.springframework.org/schema/cache"
    10.         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    11.                 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    12.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    13.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    14.             http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
    15.             http://www.springframework.org/schema/context http://www.springframework.org/s ... ing-context-3.0.xsd">
    16.     <!-- 加载资源文件  其中包含变量信息,必须在Spring配置文件的最前面加载,即第一个加载-->
    17.     <context:property-placeholder location="classpath:memcache.properties" />
    18.     <bean  
    19.          id= "memcachedClientBuilder"  
    20.          class= "net.rubyeye.xmemcached.XMemcachedClientBuilder"
    21.          p:connectionPoolSize = "${memcached.connectionPoolSize}">  
    22.          <constructor-arg >  
    23.              <list>  
    24.                  <bean  class= "java.net.InetSocketAddress" >  
    25.                      <constructor-arg >  
    26.                          <value>${memcached.server1.host}</value >  
    27.                      </constructor-arg >  
    28.                      <constructor-arg >  
    29.                          <value>${memcached.server1.port}</value >  
    30.                      </constructor-arg >  
    31.                  </bean>  
    32.              </list >  
    33.          </constructor-arg >  
    34.          <constructor-arg >  
    35.              <list >  
    36.                  <value>${memcached.server1.weight} </value >  
    37.              </list >  
    38.          </constructor-arg >  
    39.          <property  name= "commandFactory" >  
    40.              <bean  class= "net.rubyeye.xmemcached.command.TextCommandFactory"  />  
    41.          </property >  
    42.          <property  name= "sessionLocator" >  
    43.              <bean  class= "net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"  />  
    44.          </property >  
    45.          <property  name= "transcoder" >  
    46.              <bean  class= "net.rubyeye.xmemcached.transcoders.SerializingTranscoder"  />  
    47.          </property >  
    48.      </bean >  
    49.      <bean  
    50.          id= "memcachedClient"  
    51.          factory-bean= "memcachedClientBuilder"  
    52.          factory-method= "build"  
    53.          destroy-method= "shutdown"  />
    54. </beans>
    复制代码

    MemcachedSpringTest:
    1. package com.itstyle.cache;

    2. import static org.junit.Assert.*;

    3. import java.util.concurrent.TimeoutException;

    4. import net.rubyeye.xmemcached.MemcachedClient;
    5. import net.rubyeye.xmemcached.exception.MemcachedException;

    6. import org.junit.Before;
    7. import org.junit.Test;
    8. import org.springframework.context.ApplicationContext;
    9. import org.springframework.context.support.ClassPathXmlApplicationContext;

    10. public class MemcachedSpringTest {
    11.         private ApplicationContext app;  
    12.     private MemcachedClient memcachedClient;  

    13.         @Before
    14.         public void init() {
    15.                 app = new ClassPathXmlApplicationContext("spring-mvc.xml");
    16.                 memcachedClient = (MemcachedClient) app.getBean("memcachedClient");
    17.         }
    18.         @Test
    19.         public void test() {
    20.                 try {
    21.                         // 设置/获取
    22.                         memcachedClient.set("zlex", 36000, "set/get");
    23.                         assertEquals("set/get", memcachedClient.get("zlex"));
    24.                         // 替换
    25.                         memcachedClient.replace("zlex", 36000, "replace");
    26.                         assertEquals("replace", memcachedClient.get("zlex"));
    27.                         // 移除
    28.                         System.out.println(memcachedClient.get("zlex"));
    29.                         memcachedClient.delete("zlex");
    30.                         assertNull(memcachedClient.get("zlex"));
    31.                 } catch (TimeoutException e) {
    32.                         e.printStackTrace();
    33.                 } catch (InterruptedException e) {
    34.                         e.printStackTrace();
    35.                 } catch (MemcachedException e) {
    36.                         e.printStackTrace();
    37.                 }
    38.         }
    39. }
    复制代码
    项目所需JAR包

    项目结构:





    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表