记一次springboot整合redis异常排查: ERR Client sent AUTH, but no password is set

1 篇文章 0 订阅

异常情况

项目打包后启动出现了这个异常: ERR Client sent AUTH, but no password is set。

原因是:redis-server 服务端没有设置密码,但是客户端是带着密码发送验证的。

解决方式

方式1:

redis-server 服务端修改对应配置文件,然后重启服务

方式2:

这里是我犯的错误

检查springboot打包后的配置文件application.yml、application-prod.yml等。

springboot 加载配置文件的优先级顺序依次是:–file:./config/、–file:./、 –classpath:/config/ 、–classpath:/ 

以上顺序按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置的内容,其中配置文件中的内容是互补配置,即

  • 存在相同的配置内容,高优先级的内容会覆盖低优先级的内容

  • 存在不同的内容的时候,高优先级和低优先级的配置内容取并集

我这里的问题就出在了这个并集上。我打包的时候,资源目录(classpath)下的application-prod.yml文件中, redis 参数设置了password属性的值,但是我打包完成之后,我在打好的jar包工程根目录下有重新添加了一个application-prod.yml文件,其中redis的参数没有添加password属性(因为redis-server 本身没有设置密码,所以这里直接没有添加password这个属性)。

结果工程启动的时候,根据配置文件的加载规则,redis的其他参数加载的是工程根目录下的application-prod.yml文件中配置的属性值,password参数加载了项目资源目录(classpath)下的application-prod.yml文件中的值,两个配置文件中redis参数的合集成为了我程序中实例化jedis客户端对象的属性。

而我启用的redis-server 本身没有设置密码的,所以在程序调用jedis客户端对象操作的时候,报了如下的错误:

 redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set

处理方法

  • 工程根目录下的application-prod.yml文件中配置redis.password属性值为空字符串;

  • 或者删除资源目录(classpath)下的application-prod.yml文件中的redis.password属性。

总之,确保配置文件加载完之后的配置内容的合集是你想要的结果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值