java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot整合Redis启动失败

SpringBoot整合Redis启动失败的常见错误以及解决方法

作者:程序员1970

本文详细介绍了Spring Boot整合Redis启动失败的常见错误及其解决方法,涵盖了服务配置、配置文件、依赖、集群配置、密码、网络、连接池、依赖冲突和Redis服务端等多个方面的问题,通过逐一排查和解决这些问题,需要的朋友可以参考下

一、Redis服务配置问题

1. Redis服务未启动

报错内容

Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379

原因:Redis服务未启动

2. Redis配置文件错误(bind和protected-mode)

报错内容

org.springframework.data.redis.connection.RedisConnectionFailureException: 
Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379

原因

解决方案

  1. 注释bind 127.0.0.1
  2. protected-mode yes改为protected-mode no

二、配置文件错误

1. 连接参数配置错误

报错内容

Caused by: org.springframework.data.redis.connection.PoolException: 
Could not get a resource from the pool; 
nested exception is io.lettuce.core.RedisConnectionException: 
Unable to connect to 127.0.0.1:6379

原因

正确配置

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: password
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 1s

三、依赖问题

1. 缺少必要依赖

报错内容

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'redisConnectionFactory' defined in class path resource 
[org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.class]: 
Cannot create a Redis connection factory for the given configuration.

原因:缺少spring-boot-starter-data-redis依赖

解决方案

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2. 依赖版本不兼容

报错内容

Caused by: java.lang.NoClassDefFoundError: org.springframework.data.redis.connection.RedisConnectionFactory

原因:Jedis与spring-boot-starter-data-redis版本不兼容

解决方案

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.1</version> <!-- 与Spring Boot版本匹配 -->
</dependency>

四、Redis集群配置错误

1. 客户端配置为集群模式,但Redis未开启集群

报错内容

ERR This instance has cluster support disabled

原因

解决方案

  1. 如果使用单节点,修改为单节点配置:
spring:
  redis:
    host: 127.0.0.1
    port: 6379
  1. 如果需要集群,确保Redis已正确配置集群

五、密码配置问题

1. 密码不匹配

报错内容

org.springframework.data.redis.connection.PoolException: 
Could not get a resource from the pool; 
nested exception is io.lettuce.core.RedisConnectionException: 
ERR Client sent AUTH, but no password is set

原因

解决方案

  1. 确保Redis配置文件中设置了正确的密码:
requirepass your_password
  1. 确保配置文件中password与Redis设置一致

六、网络与防火墙问题

1. 防火墙阻止端口访问

报错内容

org.springframework.data.redis.connection.RedisConnectionFailureException: 
Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379

原因:防火墙阻止了6379端口的访问

解决方案

# CentOS
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

七、连接池配置问题

1. 连接池参数配置不当

报错内容

org.springframework.data.redis.connection.PoolException: 
Could not get a resource from the pool; 
nested exception is io.lettuce.core.RedisConnectionException: 
Unable to connect to XXX.XXX.XXX:6379

原因:连接池配置不合理,导致连接被耗尽

解决方案

spring:
  redis:
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 1s

八、依赖冲突问题

1. 依赖版本冲突

报错内容

Correct the classpath of your application so that it contains a single, compatible version of org.springframework.data.repository.config.RepositoryConfigurationSource

原因:依赖版本冲突,特别是Spring Data Commons版本不匹配

解决方案

  1. 移除显式指定的依赖版本,让Spring Boot自动管理版本
  2. 确保所有依赖与Spring Boot版本兼容

九、Redis服务端问题

1. Redis服务端端口被占用

报错内容

org.springframework.data.redis.connection.RedisConnectionFailureException: 
Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379

原因:6379端口被其他进程占用

解决方案

# 检查端口占用
netstat -anp | grep 6379

# 结束占用进程
kill -9 <PID>

总结

  1. 确认Redis服务已启动redis-cli ping应返回PONG
  2. 检查配置文件:确保host、port、password正确
  3. 检查依赖:确保包含spring-boot-starter-data-redis和Jedis
  4. 检查Redis配置:注释bind 127.0.0.1,设置protected-mode no
  5. 检查防火墙:确保6379端口开放
  6. 检查连接池配置:合理配置连接池参数
  7. 检查版本兼容性:确保Spring Boot与Redis客户端版本兼容

以上就是SpringBoot整合Redis启动失败的常见错误以及解决方法的详细内容,更多关于SpringBoot整合Redis启动失败的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文