在使用Redis Cluster时,即使只在配置文件中配置了一个Redis节点,也会看到多个节点的信息。这是因为Redis Cluster会自动发现并添加其他节点。
当你启动Spring Boot应用程序时,JedisCluster会尝试与配置的节点建立连接。然后,通过与其中一个节点通信,JedisCluster会获取整个集群的拓扑信息,并自动添加其他节点到连接池中。
这就是为什么在运行时显示了多个节点的信息。这些额外的节点是Redis Cluster的一部分,它们是集群中其他实例的代表。
你可以使用 JedisCluster#getClusterNodes()
方法来获取JedisCluster当前连接的所有节点的信息。例如:
@Autowired
private JedisCluster jedisCluster;
// ...
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for (Map.Entry<String, JedisPool> entry : clusterNodes.entrySet()) {
String nodeId = entry.getKey();
JedisPool jedisPool = entry.getValue();
// 处理每个节点的信息...
}
请注意,即使在配置文件中只配置了一个节点,这个方法也会返回所有连接的节点信息。
如果你只想连接特定的节点,而不是整个集群,你可以考虑使用单机模式的Redis连接,而不是Redis Cluster。在单机模式下,你可以只连接配置文件中指定的单个Redis节点。