前言
最近两天某个项目的认定模块总是出现问题,好几个老师群里反馈,后面小组成员排查了一下发现是Redis key过期回调没有触发。
先说一下我们这个服务的逻辑,当某个活动被启用时,会自动创建一个缓存,ttl为现在时间距离活动开始时间的长度,然后当key过期时,会自动触发RedisKeyExpirationListener 里面的onMessage,然后再去实现具体的业务。
一直以来Prod和Dev一直是可以正常使用的,然后最近才出现这个问题。
一开始以为是某些活动没有触发到,今天仔细一看是所有都没有触发出来!!
于是我们就慌了,后面看了一下发现是Redis的某个配置没有开启,就是这个:notify-keyspace-events Ex。
但是又很奇怪,为什么之前一直可以?最近才会出现这个问题呢?(等大佬解答
上图,默认是没有开启这个回调事件的。
于是暂停了SpringBoot服务,然后重新配置了一下Redis,再一顿重启,终于搞定。(图示是我另外一个也是用到这个的模块
太多坑了,有个小伙伴提转MQ异步消费,感觉更稳定!