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

Spring Boot 2迁移至3后Redis连接被拒绝问题求助

Spring Boot 3迁移后Redis连接被拒绝问题排查方案

错误信息显示应用尝试连接localhost/127.0.0.1:6379,但你的配置文件中指定的Redis地址是172.22.64.1:6379,说明配置未生效或被覆盖,以下是具体排查和解决方向:

1. 确认配置是否实际生效

  • 检查是否存在优先级更高的配置源覆盖了spring.redis.host:比如命令行参数、环境变量、其他profile配置文件(如application-dev.yml)、系统属性等。Spring Boot的配置优先级是命令行参数 > 环境变量 > 系统属性 > 应用内配置文件。
  • 启动应用时,在日志中搜索spring.redis.host,查看实际加载的配置值;若启用了Spring Boot Actuator,也可通过/actuator/env端点查看当前生效的Redis配置。

2. 检查自定义Redis配置类

如果项目中存在自定义的RedisConnectionFactory或RedisTemplate Bean,检查这些类是否硬编码了Redis连接地址(比如写死了localhost),没有读取配置文件中的属性。这种情况下,需要修改自定义Bean,注入RedisProperties来获取配置值:

@Configuration
public class RedisConfig {
    @Bean
    public RedisConnectionFactory redisConnectionFactory(RedisProperties redisProperties) {
        LettuceConnectionFactory factory = new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort());
        // 其他配置
        return factory;
    }
}

3. 验证Redis服务的网络连通性

  • 在宿主机执行redis-cli -h 172.22.64.1 -p 6379 ping,确认是否能正常连接Redis。如果连接失败,检查Docker容器的端口映射是否正常,或者Redis容器是否绑定了正确的IP(默认Redis绑定127.0.0.1,需要修改redis.conf绑定0.0.0.0才能被外部访问)。
  • 如果Spring Boot应用也运行在Docker容器中,不要使用宿主机IP,而是直接用docker-compose中Redis服务的名称redis作为host(Docker Compose会自动解析服务名到容器IP),修改配置为:
    spring:
      redis:
        host: redis
        port: 6379
    

4. 排查依赖冲突

执行依赖树命令检查是否存在旧版Redis相关依赖:

  • Maven:mvn dependency:tree
  • Gradle:./gradlew dependencies
    如果发现有旧版spring-data-redis或Redis客户端(如Jedis、Lettuce)的依赖,排除掉冲突的版本,确保只使用spring-boot-starter-data-redis 3.0.1带来的依赖。

5. 检查YAML配置语法

确认application.yml中Redis配置的缩进正确(YAML对缩进严格要求),当前配置的缩进看起来没问题,但可以重新核对:

spring:
  redis:
    host: 172.22.64.1
    port: 6379

内容的提问来源于stack exchange,提问作者Darotudeen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:50:23