JedisConnectionException: Could not get a resource from the pool

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: JedisConnectionException: Could not get a resource from the pool

版本声明

在这里插入图片描述

问题介绍

将配置了redis连接池的项目部署到服务器上构建docker镜像后启动容器,发现使用redis时一直报如下错误.
部分日志如下:

2020-03-17 08:56:47.345 [http-nio-6008-exec-1] ERROR c.z.e.common.handler.ResponseExceptionHandler - redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    redis.clients.util.Pool.getResource(Pool.java:53)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
    com.zhaolaobao.ebankpay.common.redis.service.impl.RedisServiceImpl.domain(RedisServiceImpl.java:100)
    com.zhaolaobao.ebankpay.common.redis.service.impl.RedisServiceImpl.getString(RedisServiceImpl.java:55)
    com.zhaolaobao.ebankpay.qrpay.service.impl.QrPayServiceImpl.getQrPay(QrPayServiceImpl.java:89)

在这里插入图片描述
但是本地启动项目、打jar包本地java -jar运行、服务器上java -jar运行,都没问题

项目jedisPool配置

在这里插入图片描述

源码 debug

查看一下位置(根据自己的配置类得到源码位置):
org.apache.commons.pool2.impl.GenericObjectPool#GenericObjectPool(org.apache.commons.pool2.PooledObjectFactory, org.apache.commons.pool2.impl.GenericObjectPoolConfig)
在这里插入图片描述
配置好远程debug后,在服务器启动项目时,也启动本地的remote连接,等待redis配置初始化,进入此断点时,查看factory:
在这里插入图片描述
此时可以排查自己的 hostAndPort 与 password 是否正确;

原因以及解决方案

密码后面的 “$q”丢了? 密码居然变了???

排查后发现,redis密码中有个“&”的特殊符号!!!
博主本想是通过docker-compose.yml配置环境变量注入的,后来才发现密码中的这个 $ 会导致从docker-compose.yml中取值时发送这样的问题;

那么docker-compose.yml中是否可以使用 ‘\$’ 来解决此问题呢?在这里插入图片描述
然而 $符号以及后面的还是没了。

最后:
1、此密码还是老老实实的写在项目里把,不能通过环境变量注入了!!成功解决
2、或者修改密码后(不要带有‘$’ 这种特殊符号了),成解决

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
相关文章
|
算法 安全 Linux
SSH学习(二)- SSH-TRANS相关
重点学习SSH Transport Layer相关的密码学内容。
564 0
SSH学习(二)- SSH-TRANS相关
|
NoSQL Java Redis
Could not get a resource from the pool 异常定位和解决
Could not get a resource from the pool 异常定位和解决
491 4
|
Java 数据库
使用hutool工具类轻松实现导入导出
只有代码,解释较少,想看详细导入导出:
710 0
|
5月前
|
存储 弹性计算 测试技术
10分钟私有部署QwQ-32B模型,像购买Ecs实例一样快捷
虽然阿里云提供了基于 IaaS 部署 QwQ-32B 模型的方式,但传统的基于IaaS的部署方式需要用户自行配置环境、安装依赖、优化硬件资源,并解决复杂的网络与存储问题,整个流程不仅耗时耗力,还容易因操作失误导致各种不可预见的问题。 因此,阿里云计算巢提供了基于ECS镜像与VLLM的大模型一键部署方案,通过ECS镜像打包标准环境,通过Ros模版实现云资源与大模型的一键部署,用户无需关心模型部署运行的标准环境与底层云资源编排,10分钟即可部署使用QwQ-32B模型,15分钟即可部署使用Deepseek-R1-70B模型。
|
6月前
|
运维 安全 数据建模
阿里云数字证书管理服务免费版和收费版SSL证书区别、收费标准、申请及部署教程参考
阿里云数字证书管理服务提供多种SSL证书类型和品牌,适用于不同规模的网站,包括但不限于电商、小型企业、大型企业或个人等。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
651 2
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
995 0
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】当使用Jedis客户端连接Redis时候,遇见JedisConnectionException: Could not get a resource from the pool / Redis connection los
【Azure Redis 缓存 Azure Cache For Redis】当使用Jedis客户端连接Redis时候,遇见JedisConnectionException: Could not get a resource from the pool / Redis connection los
531 0
|
消息中间件 Java Kafka
ActiveMQ
   MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。
263 0
ActiveMQ
|
自然语言处理 Java API
如何在Java中实现多语言国际化支持
如何在Java中实现多语言国际化支持