【发布时间】:2019-08-29 13:06:45
【问题描述】:
我正在设置一个服务器,它可以监听和发送有关 redis 数据库中发生的任何事件的消息。我成功地收到了有关 redis 主机和端口的新事件的通知,但无法为 redis 集群这样做。
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxTotal(30);
config.setMaxWaitMillis(2000);
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("127.0.0.1", 7001));
JedisCluster cluster1 = new JedisCluster(jedisClusterNode, config);
String redisProperties = cluster1.getClusterNodes().toString().replaceAll("[{}]", "");
Set<HostAndPort> nodes = new HashSet<>();
String[] mainArray = redisProperties.split(",");
for (int i = 0; i < mainArray.length; i++) {
String[] equalArray = mainArray[i].split("=");
String mainData = equalArray[0];
String[] ipPortPair = mainData.split(":");
nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
}
JedisCluster cluster = new JedisCluster(nodes, 10000, 1000, 1, config);
jedis.configSet("notify-keyspace-events", "AKE");// 适用于所有类型的事件 jedis.psubscribe(new KeyListenerCluster(), "keyevent@0:*");
我可以在使用 redis-cluster 时执行所有其他操作,但不能做一件事。
cluster.configSet("notify-keyspace-events", "AKE");// 适用于所有类型的事件 cluster.psubscribe(new KeyListenerCluster(), "keyevent@0:*");
【问题讨论】:
标签: redis jedis redis-cluster