Spring Boot集成Redis缓存报错:无法获取Jedis连接
解决Redis连接池无法获取资源的异常
这个问题我之前在集成Spring Boot+Redis缓存时也碰到过,核心原因就是Redis服务没正常运行、连接配置不全或者依赖缺失,咱们一步步来排查解决:
1. 先确认Redis服务是否正在运行
这是最基础的排查步骤,别上来就查代码配置!
- 打开终端执行命令:
redis-cli ping- 如果返回
PONG,说明Redis服务正常运行; - 如果报错,先启动Redis服务:
- Linux系统:
sudo systemctl start redis(如果是服务方式安装)或者直接运行redis-server; - Windows系统:找到Redis安装目录,双击
redis-server.exe启动。
- Linux系统:
- 如果返回
2. 补充完整Redis连接配置
你的properties配置只加了host和port,有些关键配置缺失可能导致连接失败:
- 如果Redis设置了访问密码,必须添加:
spring.redis.password=你的Redis密码 - 建议补充连接池配置,避免因连接耗尽导致拿不到资源:
# 连接池最大活跃连接数 spring.redis.jedis.pool.max-active=8 # 连接池最大空闲连接数 spring.redis.jedis.pool.max-idle=8 # 连接池最小空闲连接数 spring.redis.jedis.pool.min-idle=0 # 获取连接的最大等待时间(-1表示无限制) spring.redis.jedis.pool.max-wait=-1ms - 如果Redis用了非默认数据库(默认是0),加上:
spring.redis.database=1
3. 检查Redis依赖是否正确引入
确保项目的依赖管理文件里包含了Spring Data Redis和Jedis的依赖:
Maven(pom.xml):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
Gradle(build.gradle):
implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'redis.clients:jedis'
4. 检查Redis的本地连接限制
如果是本地Redis但还是连不上,检查Redis配置文件(通常是redis.conf):
- 确认
bind 127.0.0.1配置:这个是允许本地连接,没问题; - 确认
protected-mode yes:本地连接下这个模式不会影响,不用修改; - 注意:如果是远程Redis,才需要修改
bind为0.0.0.0并关闭保护模式或设置密码。
5. 确认代码中的缓存配置没问题
你的代码里这几点是正确的,不用改:
- 启动类加了
@EnableCaching,开启缓存功能; - User实体类实现了
Serializable,符合缓存序列化要求; @Cacheable注解的value和key配置正确。
按上面的步骤排查下来,基本就能解决Cannot get Jedis connection的异常了。
内容的提问来源于stack exchange,提问作者developer
相关产品推荐
相关产品推荐

