过期键集群模式——Spring数据Redis

问题描述

我正在尝试侦听 Redis 集群的不同节点中的到期事件。 Redis 集群有 3 个主节点。出于某种原因,该应用程序仅订阅一个随机的 Redis 节点。我发现了以下 thread解决方法是侦听所有主节点。我也尝试过 Jedis 库。如何强制 Spring 配置侦听所有节点?这是我当前的配置:

@Bean
public RedisConnectionFactory redisConnectionFactory() {
    RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(Arrays.asList("172.18.0.2:6379,172.18.0.3:6379,172.18.0.4:6379".split(",")));
    clusterConfiguration.setMaxRedirects(10000);
    LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(clusterConfiguration);
    return lettuceConnectionFactory;
}

@Bean
RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory,@Qualifier("expirationListenerAdapter") MessageListenerAdapter expirationListenerAdapter) {
    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(redisConnectionFactory);
    container.addMessageListener(expirationListenerAdapter,new PatternTopic("__keyevent@*__:expired"));
    return container;
}

@Bean("expirationListenerAdapter")
MessageListenerAdapter expirationListenerAdapter(RedisReceiver redisReceiver) {
    return new MessageListenerAdapter(ListenerClass,"expiredEvent");
}

@Bean
ListenerClass receiver() {
    return new ListenerClass();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)