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
原因:
- Redis配置文件中
bind 127.0.0.1未注释 protected-mode未设置为no
解决方案:
- 注释
bind 127.0.0.1行 - 将
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
原因:
- 配置文件中的host、port或password与实际Redis服务不匹配
- YAML配置缩进错误
正确配置:
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
原因:
- 配置了
spring.redis.cluster.nodes但Redis未配置为集群模式
解决方案:
- 如果使用单节点,修改为单节点配置:
spring:
redis:
host: 127.0.0.1
port: 6379
- 如果需要集群,确保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
原因:
- 配置了password但Redis服务器未设置密码
- 配置的password与Redis实际密码不匹配
解决方案:
- 确保Redis配置文件中设置了正确的密码:
requirepass your_password
- 确保配置文件中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版本不匹配
解决方案:
- 移除显式指定的依赖版本,让Spring Boot自动管理版本
- 确保所有依赖与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>
总结
- 确认Redis服务已启动:
redis-cli ping应返回PONG - 检查配置文件:确保host、port、password正确
- 检查依赖:确保包含
spring-boot-starter-data-redis和Jedis - 检查Redis配置:注释bind 127.0.0.1,设置protected-mode no
- 检查防火墙:确保6379端口开放
- 检查连接池配置:合理配置连接池参数
- 检查版本兼容性:确保Spring Boot与Redis客户端版本兼容
以上就是SpringBoot整合Redis启动失败的常见错误以及解决方法的详细内容,更多关于SpringBoot整合Redis启动失败的资料请关注脚本之家其它相关文章!
