关于项目启动NOPERM this user has no permissions to run the config SET command报错问题排查

最近项目整体迁移到百度云,其中redis也是直接用的百度云的提供云服务,项目中有用到redis,之前本地环境项目启动都是ok,但是迁移到百度云后,启动项目,就报NOPERM this user has no permissions to run the config SET command,这个错误意思就是用户没有对config set 这个命令有操作权限,百度云用的是redis6.0,redis6.0是提供了更为细致的权限控制粒度,不仅支持用户名,密码,还有命令。仔细查看报错日志,发现是代码中有个RedisKeyExpirationListener类,是这个类执行了config set命令,导致报没有权限,但是我查看这个自定义类的代码,并没有发现这个类里有操作config set命令,这个类是我自定义的一个redis过期key的监听器,实现了redis的自带的监听器类KeyExpirationEventMessageListener。而redis 自带KeyExpirationEventMessageListener类是一个过期key的监听器,源码里应该是使用了config set命令,用来设置过期策略和处理过期key的。于是找到百度云的技术支持人员,说了这个情况,他们那边的回复,是config set命令确实是他们那边给禁止使用了,因为这个命令权限太大,如果需要哪些命令,需要提供白名单给到他们,他们升级版本后才可用。我感觉太过麻烦,就想着将KeyExpirationEventMessageListener类替换成MessageListener类,替换成这个类是可以启动了,也能完成过期key的监听,但是MessageListener类是redis顶层消息监听器,任何消息发布都会监听,订阅到,不仅仅是过期事件的监听,这个不符合业务的单一原则。因此还是打算让百度云添加命令权限白名单,同时升级版本给到我们用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值