You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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启动。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:00:35