博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring整合redis使用RedisTemplate的坑Could not get a resource from the pool
阅读量:5979 次
发布时间:2019-06-20

本文共 1421 字,大约阅读时间需要 4 分钟。

 

一、背景

  项目中使用spring框架整合redis,使用框架封装的RedisTemplate来实现数据的增删改查,项目上线后,我发现运行一段时间后,会出现异常Could not get a resource from the pool。起初我是觉得redis的最大连接数不够,所以一味地增大最大连接数,试了几次,发现还是报异常:Could not get a resource from the pool。但是看到连接池中明显有链接,况且此问题一般是资源池的连接数大于设置的最大连接数才出现。最后怀疑是没有释放连接。so网上搜,解决了这个问题。

Caused by: redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool	at redis.clients.util.Pool.getResource(Pool.java:51)	at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)	at redis.clients.jedis.JedisPool.getResource(JedisPool.java:16)	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:191)	... 86 moreCaused by: java.util.NoSuchElementException: Timeout waiting for idle object	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)	at redis.clients.util.Pool.getResource(Pool.java:49)	... 89 more

 

二、解决

问题的关键在于redis的配置文件中enableTransactionSupport的设置。

1、enableTransactionSupport = false 。此时redis不支持事物。RedisTemplate会在使用完了之后自动释放连接;

2、enableTransactionSupport = true 。此时redis支持事物。RedisTemplate是不会主动释放连接的,需要手动释放连接,此问题可以参考这篇文档:。

redisTemplate.exec();RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());

 

三、附录

附上阿里云redis的常见异常文档

 1、

 2、

 

 

 

转载于:https://www.cnblogs.com/DDgougou/p/10268206.html

你可能感兴趣的文章
phpstorm xdebug remote配置
查看>>
STL札记3-2(hashtable关联容器set、map)
查看>>
Android 打开屏幕旋转
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
Git fetch和git pull的区别
查看>>
引用与指针的区别
查看>>
pygtk笔记--2.1:布局容器,VBox、Hbox、Alignment
查看>>
修改PHP模板
查看>>
dtree.js树的使用
查看>>
将0~N打乱顺序,然后排序
查看>>
Javascript 函数声明和函数表达式的区别
查看>>
10.23 相对,绝对路径,cd,mkdir/rmdir,rm命令
查看>>
传参方式小记
查看>>
系统重构笔记
查看>>
浏览器本地存储
查看>>
设计模式——工厂方法模式和抽象工厂模式
查看>>
FCC有意支持Sprint与T-Mobile合并?
查看>>
XMLHttpRequest
查看>>
Linux集群架构(下)——DR模式、keepalived+LVS
查看>>
使用Xshell连接Linux服务器
查看>>