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

本文讲述了开发者在开发Spring Boot应用时,遇到Redis Sentinel配置问题,误将自身节点识别为slave,导致连接失败。通过源码追踪和配置文件检查,发现原来是遗留配置导致的自我注册问题。最后给出解决步骤和经验教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先背景是这样得,正在开发一个防止重复提交得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 类的里面发现些问题

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

再来看  connection.sync 方法

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峡谷电光马仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值