redisson-spring-boot-starter Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381

首先背景是这样得,正在开发一个防止重复提交得spring-boot-starter ,公司临时需要在单机笔记本部署一下sentinel redis 集群,为了简单我做了个了个docker-compose 以及一些redis.conf 和sentinel.conf ,然后用redis-cli 测试了下master节点,没问题,数据可以保存可以查询,觉得没问题了,于是开始继续我得工作,我的spring-boot-starter 内部引用的是ression ,想着反正笔记本的单机版本搭建完了,那我正好用ression 连接那个sentinel集群开发,就当测试了,但是启动后却一直报错如下:

Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381

于是我开始排查是不是我哪里配置没有生效导致用了他默认的配置,但是排查了之后发现没有漏掉的配置,无奈之下只能开始跟踪ression 源码,功夫不负有心人,在sentinelConnectionManager 类的里面发现些问题

redisson-spring-boot-starter Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381_第1张图片

redisson-spring-boot-starter Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381_第2张图片

 在里面connection.sync 方法返回的slaves 居然多了两个 slave,本来我只有一个master ,两个slave,现在为了四个,而且其中还有俩是127.0.0.1:6381  127.0.0.1:6380

再来看  connection.sync 方法
redisson-spring-boot-starter Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381_第3张图片

 这个本身只是一个发送命令,所以返回值不可能是我们配置的程序配置出来的,而是确实从master 获取到了4个 slaves ,所以基本就确定了,肯定是服务端配置哪里有了问题,要不就是刚刚配置的有问题,要么就是原来笔记本的虚拟机离有一套redis服务干扰了新部署的集群,于是重新查看配置文件发现如下:

redisson-spring-boot-starter Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6381_第4张图片

果然,这个 配置是原来的忘记改了,所以变成了自己注册自己,但后sentinel又将这个节点当作一个slave 返回给了主机,所以返回slaves 会多两个个127.0.0.1 6380 6381,然后在检验时候本地一直无法连接这俩ip 端口,会一直报错,改了之就没问题了,

总结起来还是自己马虎造成的问题,希望大家引以为戒

你可能感兴趣的:(redis,数据库,database,java,spring,boot)