背景
当时是这样子的,业务系统开发,当时主责开发一个模块,突然某一天,它就启动不了了, 报了一个错:ERR This instance has cluster support disabled (Redis的报错提示)
嗯,就是这个东西。很迷,一直都是好的,咋突然就不行了呢?
明明就没有用到 redis , 怎么会报这个错呢, 虽然依赖里面引入了,但从来没有用过啊,代码里面除了父级目录的 pom.xml 下引入了 redis (其实当前这个模块是不需要用的),但父级用了就用吧,之前也没啥毛病。
唯一有变化的就是,配置中心里面添加了 redis 配置的引用,就是 include 那个啥。
但这也不应该说就造成。。。报错吧?毕竟,不是没有用到么?它干嘛要报这个错呢。真真没有想清楚。
定位过程
1、把代码回滚很久之前,还是报错,说明不是代码层面的问题。
2、那还能 啥问题呢?
突然想起,这个模块不是明明就没有用到redis 吗?为什么配置中心要把 redis 的配置给引进来呢?—— 突然想到什么。。。,之前开过另外一个分支,做性能优化的,引入了redis,于是在配置中心加入了 redis 的配置。难道???是因为这个原因?
总结原因
1、因为在另外一个分支调试性能,修改了配置中心,引入了redis的配置
2、redis 的配置写的是集群方式,但redis 实质是单点的,所以这种解析是需要自定义 redisConfig 类的
3、只引入了 redis 配置,但是与redis 单机部署的方式冲突了,同时没有引入 redisConfig, 以上几种因素,导致报了这个错
4、如果不引入 redis 配置,那它也不会去解析了,也不会报错了。
问题解决
1、把配置中心的 redis 配置去掉之后,竟然就好了。。。。好了!!
2、emmmmmmmm,还能说啥呢。原因就这个。即使代码里面没有用到类似于 redisTemplate 之类的东西,只要在Pom.xml 上引用了,并且又配置了redis,并且又没有重写解析 RedisConfig 类(当时配置的是集群,但实际上部署的是单机,所以就出现了这个问题)。
3、知道这个原因后,把redis配置去掉之后,就好了。另外一个解决方案就是:引入自定义的 redisConfig配置解析类,也可以了。
4、再或者:把redis的配置,写成单点的,这样的就不需要引入自定义的 redisConfig 配置类,这样它默认的策略能解析了,也行。反正就刚好这些各种不规范的操作导致的这一次。。。差点引发的事故。
嗯,又吃了一记教训。
标签:redisConfig,redis,配置,Redis,报错,引入,解析,小记 From: https://www.cnblogs.com/aaacarrot/p/17372244.html