【Azure Redis 缓存 Azure Cache For Redis】当使用Jedis客户端连接Redis时候,遇见JedisConnectionException: Could not get a resource from the pool / Redis connection lost
问题情形
当在执行Redis一直指令时,有可能会遇见如下几种错误:
1) redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
2) redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
3) JedisTemplate.execute - Redis connection lost.
以上三种错误,在详细的Stack Trace中,其引起的根本异常情况都是 java.net.SocketTimeoutException: Read timed out。 具体原因时在执行指令时候超时。 所以这里要从执行的命令和Redis服务器的Server Load来判断问题。
解决办法
修改Jedis的默认超时时间(2秒)。如果执行的命令时KEYS等比较耗时的操作,可以考虑增加到3~5秒为超时时间。但时最好的办法还是不要使用KEYS等命令,根据Redis官方网站的介绍,可以使用SCEN来替换。
修改初始化JedisPool时的Timeout时间。
JedisPool(GenericObjectPoolConfig poolConfig, String host, int port, int timeout)
参考资料:
java.net.SocketTimeoutException: Read timed out:https://github.com/xetorthio/jedis/wiki/FAQ#if-you-get-javanetsockettimeoutexception-read-timed-out-exception (如不能访问Github链接,可点击:[Azure Redis]If you get java.net.SocketTimeoutException: Read timed out exception)
KEYS: https://redis.io/commands/keys
SCAN: https://redis.io/commands/scan
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?