之前系统使用的Springboot版本比较低,集成了redis不带密码可以使用。但是由于环境需要,redis需要密码验证,系统由于版本过低,不支持redis密码,于是升级了Springboot的版本到2.1.8,redis的jar包也跟着做了调整。但是调整后发现,项目启动成功(redis可以连接,集群也是正常的),但是启动后出现redis的报错,系统没有挂掉,redis服务还可以用,系统中出现报错总是很难受,于是想办法解决。具体报错如下图:
RedisReactiveHealIndicator:Redis health check failed
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:234)
at io.lettuce.core.RedisClient.connect(RedisClient.java:207)
at.org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
atorg.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1198) ... 15 common frames omitted
在网上搜了很久,但是都没有解决,也都是盯着报错看,忽略了第一行,仔细看了一下,是redis health check failed。于是找了一下如何关闭redis health check.因此便查到了一个配置,在yml文件中添加如下配置即可:
management:
health:
redis:
enabled: false
成功解决了报错。
分析:系统使用spring-boot-starter-actuator这个依赖后, SpringBoot会默认去监测一些信息。其中就包括redis、 会根据redis的默认初始配置, localhost:6379 尝试连接redis。