Jedis 中的动态拓扑刷新

问题描述 投票:0回答:1

我有一个托管在 Kubernetes 集群中的多主 Redis 集群配置。我们使用 Jedis 库通过负载均衡器的主机名连接到 Redis。主机名是 prod-redis-cluster.xyz.com。 T 当redis节点打补丁时,负载均衡器的IP地址不会改变,而负载均衡器后面的实际Redis节点的IP地址会改变。但是,应用程序失去了与集群的连接,只有当我们重新启动应用程序时它才会重新建立。

我们使用JEDIS客户端库。示例代码位于此处。

Spring - K8s环境中托管的Redis的Redis集群配置

Jedis的Lettuce客户端提供了按特定时间间隔动态刷新拓扑的选项。请参考以下链接。

https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.html

redis:
cluster:
 nodes:
lettuce:
  cluster:
    refresh:
      adaptive: true
      period: 5m
timeout: 150

and 

 
`RefreshOptions R = ClusterTopologyRefreshOptions.builder()          
  .dynamicRefreshSources(false).enablePeriodicRefresh(true).build()

上述代码有助于解决 Lettuce 中的问题。如何在 Jedis 中实现同样的效果?

spring jedis
1个回答
0
投票

抱歉,我不确定使用 Spring 的具体细节,但我可以谈谈 Jedis 库本身 🙂

您必须调查库的内部结构以及您正在使用的特定客户端,因为有一些。具体来说,您将查看您的客户是否使用

JedisClusterInfoCache
,如果使用,则如何使用。

我在这里突出显示了具有计划拓扑刷新的相关部分:https://github.com/redis/jedis/blob/65d431f549502364bacbc8c25c85e973278c437a/src/main/java/redis/clients/jedis/JedisClusterInfoCache.java#L72-L84

我知道这个问题是几年前提出的,随着时间的推移,事情可能已经发生了变化。希望这对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.