源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all

一、说明

1.1 XMemcached客户端说明

XMemcached是基于java nio的memcached高性能客户端,支持完整的memcached协议,支持客户端分布并且提供了一致性哈希(consistent hash)算法的实现。

1.2 项目结构说明

  1. memcached的整合配置位于resources下的memcached文件夹下,其中集群配置用cluster开头。所有配置按照需要在springApplication.xml用import导入。
  2. 实体类Programmer.java用于测试memcached序列化与反序列化

springapplication.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!--memcached 单机版配置-->
  6. <!--<import resource="classpath*:memcached/singleConfig.xml"/>-->
  7. <!--memcached 集群配置-->
  8. <import resource="classpath*:memcached/clusterConfig.xml"/>
  9. </beans>

1.3 依赖说明

除了spring的基本依赖外,需要导入xmemcached依赖包

  1. <!--memcached java 客户端-->
  2. <dependency>
  3. <groupId>com.googlecode.xmemcached</groupId>
  4. <artifactId>xmemcached</artifactId>
  5. <version>2.4.5</version>
  6. </dependency>

二、spring 整合 memcached

2.1 单机配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="memcachedClientBuilder" class="net.rubyeye.xmemcached.XMemcachedClientBuilder">
  6. <constructor-arg name="addressList" value="192.168.200.201:11211"/>
  7. </bean>
  8. <bean id="memcachedClient" factory-bean="memcachedClientBuilder" factory-method="build"
  9. destroy-method="shutdown"/>
  10. </beans>

2.2 集群配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean name="memcachedClientBuilder" class="net.rubyeye.xmemcached.XMemcachedClientBuilder">
  6. <!--memcached servers 节点列表-->
  7. <constructor-arg name="addressList">
  8. <list>
  9. <bean class="java.net.InetSocketAddress">
  10. <constructor-arg value="192.168.200.201"/>
  11. <constructor-arg value="11211"/>
  12. </bean>
  13. <bean class="java.net.InetSocketAddress">
  14. <constructor-arg value="192.168.200.201"/>
  15. <constructor-arg value="11212"/>
  16. </bean>
  17. </list>
  18. </constructor-arg>
  19. <!--与servers对应的节点的权重-->
  20. <constructor-arg name="weights">
  21. <list>
  22. <value>1</value>
  23. <value>2</value>
  24. </list>
  25. </constructor-arg>
  26. <!--连接池大小-->
  27. <property name="connectionPoolSize" value="10"/>
  28. <!--协议工厂-->
  29. <property name="commandFactory">
  30. <bean class="net.rubyeye.xmemcached.command.TextCommandFactory"/>
  31. </property>
  32. <!--分布策略,一致性哈希net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator或者ArraySessionLocator(默认)-->
  33. <property name="sessionLocator">
  34. <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"/>
  35. </property>
  36. <!--序列化转换器,默认使用net.rubyeye.xmemcached.transcoders.SerializingTranscoder-->
  37. <property name="transcoder">
  38. <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder"/>
  39. </property>
  40. </bean>
  41. <!-- 集群配置 实例化bean -->
  42. <bean name="memcachedClientForCulster" factory-bean="memcachedClientBuilder"
  43. factory-method="build" destroy-method="shutdown"/>
  44. </beans>

2.3 存储基本类型测试用例

xmemcached单机版本和集群版本注入的实例是相同的;

  1. /**
  2. * @author : heibaiying
  3. * @description : Memcached 操作基本对象
  4. */
  5. @RunWith(SpringRunner.class)
  6. @ContextConfiguration({"classpath:springApplication.xml"})
  7. public class MemSamples {
  8. @Autowired
  9. private MemcachedClient memcachedClient;
  10. @Test
  11. public void operate() throws InterruptedException, MemcachedException, TimeoutException {
  12. memcachedClient.set("hello", 0, "Hello,cluster xmemcached");
  13. String value = memcachedClient.get("hello");
  14. System.out.println("hello=" + value);
  15. memcachedClient.delete("hello");
  16. value = memcachedClient.get("hello");
  17. System.out.println("hello=" + value);
  18. }
  19. }

2.5 存储实体对象测试用例

  1. /**
  2. * @author : heibaiying
  3. * @description :Memcached 序列化与反序列化
  4. */
  5. @RunWith(SpringRunner.class)
  6. @ContextConfiguration({"classpath:springApplication.xml"})
  7. public class MemObjectSamples {
  8. @Autowired
  9. private MemcachedClient memcachedClient;
  10. @Test
  11. public void operate() throws InterruptedException, MemcachedException, TimeoutException {
  12. memcachedClient.set("programmer", 0, new Programmer("xiaoming", 12, 5000.21f, new Date()));
  13. Programmer programmer = memcachedClient.get("programmer");
  14. System.out.println("hello ," + programmer.getName());
  15. memcachedClient.delete("programmer");
  16. programmer = memcachedClient.get("programmer");
  17. Assert.assertNull(programmer);
  18. }
  19. }

附:memcached 基本命令

命令 格式 说明
新增 set set key flags exTime length -> value 无论什么情况,都可以插入
新增 add add key flags exTime length -> value 只有当key不存在的情况下,才可以插入
替换 replace replace key flags exTime length -> value 只修改已存在key的value值
追加内容append append key flags exTime length -> value length表示追加的长度而不是总长度
前面追加prepend prepend key flags exTime length -> value length表示追加的长度而不是总长度
查询操作 get get key  
检查更新 cas cas key flags exTime length version -> value 版本正确才更新
详细获取 gets gets key 返回的最后一个数代表 key 的 CAS 令牌
删除 delete delete key 将数据打一个删除标记
自增 incr incr key 增加偏移量 incr和decr只能操作能转换为数字的Value
自减 decr decr key 减少偏移量 desr不能将数字减少至0以下
清库 flush_all  

附:源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all

spring 5.x 系列第11篇 —— 整合memcached (xml配置方式)的更多相关文章

  1. spring 5.x 系列第12篇 —— 整合memcached (代码配置方式)

    文章目录 一.说明 1.1 XMemcached客户端说明 1.2 项目结构说明 1.3 依赖说明 二.spring 整合 memcached 2.1 单机配置 2.2 集群配置 2.3 存储基本类型 ...

  2. spring 5.x 系列第13篇 —— 整合RabbitMQ (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 本用例关于rabbitmq的整合提供简单消 ...

  3. spring 5.x 系列第9篇 —— 整合mongodb (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于resources下,项目以单 ...

  4. spring 5.x 系列第17篇 —— 整合websocket (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 项目模拟一个简单的群聊功能,为区分不同的聊 ...

  5. spring 5.x 系列第15篇 —— 整合dubbo (xml配置方式)

    文章目录 一. 项目结构说明 二.项目依赖 三.公共模块(dubbo-common) 四. 服务提供者(dubbo-provider) 4.1 productService是服务的提供者( 商品数据用 ...

  6. spring 5.x 系列第1篇 —— springmvc基础 (xml配置方式)

    文章目录 一.搭建hello spring工程 1.1 项目搭建 1.2 相关配置讲解 二.配置自定义拦截器 三.全局异常处理 四.参数绑定 4.1 参数绑定 4.2 关于日期格式转换的三种方法 五. ...

  7. spring 5.x 系列第14篇 —— 整合RabbitMQ (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 本用例关于rabbitmq的整合提供简单消 ...

  8. spring 5.x 系列第10篇 —— 整合mongodb (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于com.heibaiying. ...

  9. spring 5.x 系列第18篇 —— 整合websocket (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 项目模拟一个简单的群聊功能,为区分不同的聊 ...

随机推荐

  1. C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)

    原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...

  2. HBase 数据备份

    HBase提供了备份API,直接使用shell脚本可以叫它.如下面的命令的详细信息: hbase org.apache.hadoop.hbase.mapreduce.Export 'user' /hb ...

  3. cocos2d-x 源代码分析 : Ref (CCObject) 源代码分析 cocos2d-x内存管理策略

    从源代码版本号3.x.转载请注明 cocos2d-x 总的文件夹的源代码分析: http://blog.csdn.net/u011225840/article/details/31743129 1.R ...

  4. Mybatis常用操作 专题

    parameterType:即将传入的语句参数的完全限定类名和别名.这个属性是可选项的,因为MyBatis可以推断出传入语句的具体参数,因此不建议配置该属性flushCache:默认值为true,任何 ...

  5. WPF 跨界面调用程序

    this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (System.Threading.ThreadStart)delegate() { sE ...

  6. JS 输入框为空的使用

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. passed into methods by value java专题

    java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递.因为Primitive类型的值不能改变,所以method不能更改调用方传的primitive 值.因为method更改的是Primi ...

  8. https://www.jianshu.com/p/4da29fa310d2

    wampserver显示红色.橙色的解决方案   拿笔的小鑫 关注 2016.10.15 14:38* 字数 2643 阅读 5083评论 0喜欢 3赞赏 1 </br></br&g ...

  9. Plupload上传实例《模仿微云上传实例》,带源码

    Plupload上传实例<模仿微云上传实例>,带源码,作者:鱼塘总裁 如有疑问,加群交流:646104701 一.实例截图 1.上传过程 2.上传成功 3.上传失败 4.最小化 二.所需文 ...

  10. UBUTUN 通过蓝牙连接Hoary和诺基亚手机

    通过蓝牙连接Hoary和诺基亚手机 这个how to已经用Hoary.诺基亚6630和一个道尔芯片(Dongle)蓝牙(Usb蓝牙)测试过了.通过这个How to,你可以:-通过蓝牙,从你的电脑发送文 ...