首页 > 解决方案 > 如何在集群模式下将 Vertx RedisClient 与 Elasticache 连接

问题描述

我正在使用包io.vertx.rxjava.redis.RedisClient中的 Vertx Redis 客户端连接到 Elasticache Redis。

它确实连接但显示错误,

io.vertx.redis.client.impl.types.ErrorType: MOVED 4985 xxx.xxx.xxx.xxx:63791

在阅读了错误之后,我发现它是因为有分片并且它无法连接到所有这些。

从库中,我无法确定在集群模式下使用什么方法进行连接。

标签: vert.xamazon-elasticacheredis-cluster

解决方案


这是一个如何在集群模式下连接和发送 get 命令的示例。

定义选项:

final RedisOptions options = new RedisOptions()
    .setType(RedisClientType.CLUSTER)
    .setUseSlave(RedisSlaves.SHARE)
    .setMaxWaitingHandlers(128 * 1024)
    .addEndpoint("redis://127.0.0.1:7000")
    .addEndpoint("redis://127.0.0.1:7001")
    .addEndpoint("redis://127.0.0.1:7002")
    .addEndpoint("redis://127.0.0.1:7003")
    .addEndpoint("redis://127.0.0.1:7004")
    .addEndpoint("redis://127.0.0.1:7005");

连接并发送命令:

Redis.createClient(vertx, options).connect(onCreate -> {
  final Redis cluster = onCreate.result();
  cluster.send(cmd(SET).arg("key"), set -> {
    System.out.println(set.result());
  });
});

提示:如果您不确定如何使用某些库或文档不够清楚,您可以随时查看测试(如果该项目有它们)。您可以检查它们是如何实现的,以便您可以使用那里的示例。


推荐阅读