嗨,我是 redis 过期关键事件的新手。
在本地,仅针对不同的密钥过期生成一次通知。
我有 3 个密钥在不同时间到期。
但问题是消息侦听器在生产中为同一个密钥获取两次相同的事件。
在本地仅生成一次。
请帮助我。
我已经尝试过这个代码
@Override
public void onMessage(Message message, byte[] bytes) {
try {
String key = new String(message.getBody());
@Bean
RedisMessageListenerContainer keyExpirationListenerContainer(RedisConnectionFactory connectionFactory, ExpirationListener expirationListener) {
RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer();
listenerContainer.setConnectionFactory(connectionFactory);
listenerContainer.addMessageListener(expirationListener, new PatternTopic("__keyevent@*__:expired"));
listenerContainer.setErrorHandler(e -> logger.error("There was an error in redis key expiration listener container", e));
return listenerContainer;
}
我也面临同样的问题。
我正在使用 AWS 托管的 ElasticCache,目前我对此表示怀疑。在我使用独立 Redis 实例的其他环境中这不是问题。
我也在调试这个问题,如果我有任何更新,我会及时通知你。