使用spymemcached spring整合的时候遇到的一个配置问题
来源:互联网 发布:软件项目团队管理 编辑:程序博客网 时间:2024/06/01 20:26
当使用spymemcached的时候,在windows下安装了memcached,telnet进入,测试之后写了一个java的测试类
public static void main(String args[])throws Exception{ MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); cache.set("test", 30 * 60 * 1000, "testinfo"); Object object = cache.get("test"); System.out.println(object.toString()); }
当然,这需要导入spymemcached的包,测试结果没有问题。
既然这样的话就直接用spring整合一下吧。
首先,创建一个spring-memcached.xml文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><bean id="memcachedClientFactory" class="net.spy.memcached.spring.MemcachedClientFactoryBean"><property name="servers" value="127.0.0.1:11211" /><property name="protocol" value="BINARY" /><property name="transcoder"><bean class="net.spy.memcached.transcoders.SerializingTranscoder"><property name="compressionThreshold" value="1024" /></bean></property><property name="opTimeout" value="1000" /><property name="timeoutExceptionThreshold" value="1998" /><!-- error <property name="hashAlg" value="KETAMA_HASH"/> --><property name="hashAlg"><value type="net.spy.memcached.DefaultHashAlgorithm">KETAMA_HASH</value></property><property name="locatorType" value="CONSISTENT" /><property name="failureMode" value="Redistribute" /><property name="useNagleAlgorithm" value="false" /><!-- <property name="authDescriptor" ref="authDescriptor" /> --></bean></beans>这是好多地方看到的都是这样的配置,需要详细了解的可以查一下。
然后将他导入到applicationContext.xml中:
<import resource="classpath:spring-memcached*.xml"/>
接下来只要在要使用MemcachedClient的地方以注解的方式注入就可以直接使用了
@Autowired
MemcachedClient mc;
具体的代码就不贴了,主要看问题。
当一切准备就绪,在tomcat下启动出现
2017-04-13 15:30:40.883 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
认为是没有问题了。
接下来打开网页,当我想要存取到memcached的时候,出现:
net.spy.memcached.OperationTimeoutException: Timeout waiting for value: waited 1,000 ms. Node status: Connection Status { /127.0.0.1:11211 active: true, authed: true, last read: 158,960 ms ago }
这里的active不是true吗,刚才测试的时候也好好的呀。
上网查了一下,有的说是tomcat内存溢出导致的,但是我的tomcat并没有报错呀。
有的说是spymemcached的版本不对导致的。但是我同样的版本在linux上跑了是没有问题的。
看了许多的博客帖子都没有找到什么合理的解决方法。
于是我仔细查了一下这些配置代表什么
<!-- 一个字符串,包括由空格或逗号分隔的主机或IP地址与端口号 --> <property name="servers" value="127.0.0.1:11211" /> <!-- 指定要使用的协议(BINARY,TEXT),默认是TEXT --> <property name="protocol" value="BINARY" /> <!-- 设置默认的转码器(默认以net.spy.memcached.transcoders.SerializingTranscoder) --> <property name="transcoder"> <bean class="net.spy.memcached.transcoders.SerializingTranscoder"> <property name="compressionThreshold" value="1024" /> </bean> </property> <!-- 以毫秒为单位设置默认的操作超时时间 --> <property name="opTimeout" value="1000" /> <property name="timeoutExceptionThreshold" value="1998" /> <!-- 设置哈希算法 --> <property name="hashAlg" ref="KETAMA_HASH" /> <!-- 设置定位器类型(ARRAY_MOD,CONSISTENT),默认是ARRAY_MOD --> <property name="locatorType" value="CONSISTENT" /> <!-- 设置故障模式(取消,重新分配,重试),默认是重新分配 --> <property name="failureMode" value="Redistribute" /> <!-- 想使用Nagle算法,设置为true --> <property name="useNagleAlgorithm" value="false" />
其中有一条protocol,虽然不懂这是什么,但是默认是text,为什么这里要改成binary?
于是我将其改成text试了一下,居然成功了。
哎就这一个小小的问题,要是有一个人能指点我一下该有多好,就不用花这么多的冤枉时间去找错。
虽然问题是解决了,但是我还是不知道protocol的这两个属性在不同的平台下有什么影响,为什么会这样,希望知道的能告诉我一声,谢谢啦!
- 使用spymemcached spring整合的时候遇到的一个配置问题
- spymemcached和spring的整合
- spymemcached和spring的整合
- 整合Struts2+Spring2.5的时候遇到一个问题
- 本人在做spring与hibernate整合的时候遇到一个奇怪的问题,请高手帮忙
- 本人在做spring与hibernate整合的时候遇到一个奇怪的问题,请高手帮忙
- spring整合spymemcached实现Memcached的各种操作
- spring 整合mybatis时候 MapperScannerConfigure的配置问题
- 配置spring-boot-actuator时候遇到的一些小问题
- 关于配置码云的时候遇到一个小问题
- jpa和spring再整合的时候所遇到的一些问题,异常(终结版!!!)
- Spring整合Mybatis在引入属性文件的时候遇到的问题
- memcached的配置和spymemcached的使用笔记
- 发邮件时候遇到的一个问题
- 分页操作时候遇到的一个问题
- 集群搭建时候遇到的一个问题
- 在使用SSH框架整合新闻发布系统时候遇到的问题的解决
- spring整合ibatis中遇到的问题
- jQuery each()函数
- POJ 2762 Going from u to v or from v to u?
- 视觉SLAM实战(二):ORB-SLAM2 with Kinect2
- python自然语言处理-就职演说语料库
- JSP的九个内置对象和四个作用域
- 使用spymemcached spring整合的时候遇到的一个配置问题
- Kibana基本使用
- docker基础操作命令
- 练习
- android中activity启动模式遇到的坑
- Android通过栈对Activity进行管理避免内存溢出
- cmake简单用法
- 车牌识别--倾斜矫正
- 【Java开发手册之MySQL规约(一)】建表规约