Lettuce 在集群中进行故障转移

Lettuce fail over in cluster

我正在尝试让 Lettuce 在旧主机失败后连接到新晋升的主机(前从机)。但是所有写入都停止了。故障主机重新连接后,写入继续,现在作为从属主机。并且它继续写入新的主人(以前的奴隶)。

我尝试设置定期拓扑刷新,以及针对所有事件的自适应刷新,但没有帮助。我必须使用其他设置吗?

这是我配置客户端的方式:

final List<RedisURI> redisURIs = buildRedisURIs(redisServerSettings.getNodes());
final RedisClusterClient client = RedisClusterClient.create(clientResources, redisURIs);
final ClusterTopologyRefreshOptions refreshOptions =
        ClusterTopologyRefreshOptions.builder()
                                     .enableAllAdaptiveRefreshTriggers()
                                     .adaptiveRefreshTriggersTimeout(Duration.ofMinutes(2))
                                     .refreshTriggersReconnectAttempts(2)
                                     .enablePeriodicRefresh(Duration.ofMinutes(10))
                                     .build();
client.setOptions(ClusterClientOptions.builder().topologyRefreshOptions(refreshOptions).build());

我解决了问题。

因为生菜通常没有超时,它永远等待服务器的响应。设置超时导致一些交易失败,但在交易失败后,读写继续。