这里主要是配置的问题:
- <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
- <property name="maxActive" value="50" />
- <property name="maxIdle" value="10" />
- <property name="maxWait" value="1000" />
- <property name="testOnBorrow" value="true />
这里的配置testOnBorrow只能配置为false 否则会报错
Caused by: java.util.NoSuchElementException: Could not create a validated object, cause: ValidateObject failed
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1233)
at redis.clients.util.Pool.getResource(Pool.java:20)
原因:通过 JedisPool.getResource();从连接池中获取连接的时候会对连接进行检验:
- if(_testOnBorrow &&!_factory.validateObject(latch.getPair().value)) {
- throw new Exception("ValidateObject failed");
- }
而检验的方法就是
- public boolean validateObject(final Object obj) {
- if (obj instanceof Jedis) {
- final Jedis jedis = (Jedis) obj;
- try {
- return jedis.isConnected() && jedis.ping().equals("PONG");
- } catch (final Exception e) {
- return false;
- }
- } else {
- return false;
- }
- }
看到了在JedisFactory里的实现,除了判断连接状态,还会通过Ping0来判断连接的可用性
而TwemProxy本身是不支持ping命令的。
解决方法:1,暂且设置testOnBorrow=false(默认值,其实还是不够的,因为TimerTask还是会去校验IDLE对象,如果真要这么干还要设置.testWhileIdle=false,后台不会校验到)
2,修改Proxy是器支持ping命令
相关推荐
linux中安装redis和jedis及jedispool; redis安装所遇到的问题;
使用redis.clients.jedis.JedisPool配置jedis连接,进行数据缓存操作demo
jedisPool配置1
4.使用方法:只需要将jar 放入项目 lib 下面 ,然后将redis.properties 文件放入指定文件夹下面,配置系统环境变量名“JAVAAPP_CONFIG_HOME”路径指向存放redis.properties 文件的路径 5.调用类 JedisUtil_...
本篇文章主要介绍了jedispool连redis高并发卡死的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Jedis出现connection timeout问题解决方法,使用Jedis的JedisPool连接池解决了这个问题,需要的朋友可以参考下
JedisPool pool = new JedisPool("localhost", 6379); 以下是如何在try-with-resources块中运行单个SET命令: try (Jedis jedis = pool.getResource()) { jedis.set("clientName", "Jedis"); } Jedis实例实现...
jedis(java连接redis)
jedis-2.9.0+commons-pool2-2.4.2redis依赖包亲测可用
该工具包含该了JedisPool等,详情链接http://blog.csdn.net/miniduhua/article/details/76219737
jedis
使用jedis连接池获取的jedis,可减轻redis服务器的压力,提高了运行效率
主要介绍了JedisPool资源池优化方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
redis数据库需要的额基础jar包;jedis-2.6.2.jar;commons-pool-1.5.3.jar;commons-pool2-2.4.2.jar
Jedis: 一款java操作redis数据库的工具. 使用步骤: 1.导入jedis的jar包 2.使用 jedis连接池: JedisPool ...使用步骤: ...1.创建JedisPool连接池对象 2.调用方法 getResource()方法获取Jedis连接
废弃方法为:JedisPool.returnResource(Jedis);回收资源 Jedis 3.0版本新回收资源: Jedis.close();此版本的close并不是 直接关闭jedis的连接。 注意点二:JedisPoolConfig 连接池 引用的是org.apache.commons.pool1....
jedis配置,使用了ShardedJedisPool 连接池。适合初学者了解原理。
分析了redis的: 1)java客户端实现源码 2)分析了连接channel,包括命令时客户端和服务端的socket连接;...3)分析了JedisPool连接池配置 4) 分析了命令get set hmset 等逻辑 5)分析了subscribe实现源码
本demo为java连接redis,提供jedis连接池,提供String与Hash的存取方式; 提供相关工具包括vm虚拟机和linux的centos7;
jedis提供了java语言连接redis的方法,比jdbc的连接强太多,简化了程序猿的工作