当前位置: 首页 > 知识库问答 >
问题:

使用Spring引导数据redis连接到redis集群问题

濮彬
2023-03-14

我使用spring boot data redis连接到redis群集,使用版本2.1.3,配置如下:

@Bean
@Primary
public RedisConnectionFactory myLettuceConnectionFactory(GenericObjectPoolConfig poolConfig) {
    RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
    final List<String> nodeList = redisProperties.getCluster().getNodes();
    Set<RedisNode> nodes = new HashSet<RedisNode>();
    for (String ipPort : nodeList) {
        String[] ipAndPort = ipPort.split(":");
        nodes.add(new RedisNode(ipAndPort[0].trim(), Integer.valueOf(ipAndPort[1])));
    }
    redisClusterConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));
    redisClusterConfiguration.setClusterNodes(nodes);
    redisClusterConfiguration.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());
    LettuceClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
            .commandTimeout(redisProperties.getTimeout())
            .poolConfig(poolConfig)
            .build();

    RedisClusterClient clusterClient ;

    LettuceConnectionFactory factory = new LettuceConnectionFactory(redisClusterConfiguration,clientConfig);
    return factory;
}

但是,在操作过程中,始终会收到警告异常消息,如下所示:

这似乎是莴苣的问题,如何映射远程主机

共有1个答案

郎雪风
2023-03-14

我已经得到了答案,所以让我们定义这样一个客户问题:

 MappingSocketAddressResolver resolver = MappingSocketAddressResolver.create(DnsResolvers.UNRESOLVED ,
            hostAndPort -> {
                if(hostAndPort.getHostText().startsWith("172.31")){
                    return HostAndPort.of(ipStr, hostAndPort.getPort());
                }
                return hostAndPort;
            });

    ClientResources clientResources = ClientResources.builder()
            .socketAddressResolver(resolver)
            .build();

然后通过LettuceClientConfiguration。clientResources方法设置在,生菜的正常工作。

 类似资料:
  • 当我试图按照以下部署指南连接到主节点时,我面临着MasternotFounderRorr:https://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/ 连接主Redis Sentinel节点的代码是: 我面对红魔。哨兵。MasternotFounderRorr:没有为“MyMaster”错误找到master

  • 我已经从源代码安装和编译了Redis,并试图连接到Amazon ElastiCache(Redis)集群。 我可以毫无问题地连接到默认的本地主机,但尝试连接到AWSendpoint会导致无限的挂起。 默认情况下: 现在,这是连接到endpoint的尝试,来自AWS留档主题的副本: 这会无限挂起,而不会向stderr/stdout发出任何消息。 (请注意,这是一个endpoint名称示例;我已验证我

  • 由于单个redis实例不符合我的要求,我选择了redis cluster。我用三个节点组成集群,并将数据填充到集群中。当我使用JedisCluster从集群获取数据时,它比单个实例花费更多的时间。那么,将绝地与redis星系团连接起来的正确方式是什么呢。我如何利用连接池将绝地与redis集群连接起来?

  • 我想监控并定期记录有关Redis连接池使用情况的信息。 我通过spring-data-redis RedisTemboard对象使用Redis。 有办法进入游泳池吗?

  • 我在从Lambda函数连接Elasticache时遇到问题,我已完成以下操作: 创建了一个新的安全组 Internet正常工作,我通过打开URL验证stackoverflow.com。但是Elasticache自动发现超时。是否需要进行任何额外的配置? 更新I将安全组的入站规则添加到端口6379,现在仍然超时。

  • 我已经使用以下指南成功地设置了一个密码保护的redis群集: 我使用ruby和下面的连接字符串…我做错了吗? 我得到的错误是: