【Redis异常】redis.clients.jedis.exceptions.JedisConnectionException: Could not get a res

本文详细解析了在使用Jedis客户端连接Redis时遇到的“Couldnotgetaresourcefromthepool”异常,并提供了多种可能的解决方案,包括检查Redis是否启动、调整防火墙设置、修正IP地址或端口错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常描述:

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
	at redis.clients.util.Pool.getResource(Pool.java:22)
	at com.derbysoft.jredis.longkeytest.BorrowObject.run(BorrowObject.java:22)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
	at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1134)
	at redis.clients.util.Pool.getResource(Pool.java:20)
	... 2 more

产生此错误的原因通常是:

一、Redis没有启动

我自己遇到一次这样的问题。汗!
驱动Redis:

cd ~/envs/redis
//启动服务
bin/redis-server conf/redis.conf

二、由于防火墙原因无法连接到Redis

1、服务器防火墙入站规则。

2、访问Redis的应用程序所在主机的出站(端口)规则。

问题出现场景:这个错误会不经意的出现之前打开了防火墙,可是长时间待机,最后开发时候唤醒服务时,会出现防火墙启动,导致客户机无法链接服务器。
解决:
(1)

//关闭防火墙(不推荐,只适合开发环境使用)
systemctl stop firewalld.service

(2)

//开启特定端口(6379)
1>查看哪些端口被打开 netstat -anp | grep 6379
2>关闭端口号:
/sbin/iptables -I INPUT -p tcp --dport 6379-j DROP
3>打开端口号:
/sbin/iptables -I INPUT -p tcp --dport 6379-j ACCEPT

三、IP地址或端口错误

四、Jedis 对象用完以后,要释放掉,不让会一直占用,所以会出现无法获取新的资源。

五、Spring Boot项目,缺少依赖

如果使用Redis与Spring Boot,也会抛出此异常。
如果你使用的是Spring Boot,那么Redis的依赖是不够的,
您还需要从redis.io手动下载并安装Redis,然后将其从终端运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不懂、、、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值