Redis Lettuce:发送自定义命令

5
我正在使用Java上的tile38.comlettuce.io。根据文档enter link description here,我想发送一个自定义的NEARBY fleet FENCE POINT 33.462 -112.268 6000命令,但我不知道该怎么做。
我一直在使用Lettuce中的CommandType,但我找不到发送NEARBY的方法。有人知道我该怎么做吗?
谢谢
1个回答

10

您有多种选项可以发送自定义命令:

自定义命令

使用自定义命令,您基本上需要定义一种实现了ProtocolKeyword 接口的类型,该接口可帮助您成为所有涉及命令的关键字的单一参考点。您可以使用同步、异步或反应式API来调用命令:

enum MyKeywords implements ProtocolKeyword {
    NEARBY, FENCE, POINT;

    private final byte name[];

    MyKeywords() {
        // cache the bytes for the command name. Reduces memory and cpu pressure when using commands.
        name = name().getBytes();
    }

    @Override
    public byte[] getBytes() {
        return name;
    }
}

CommandArgs<String, String> args = new CommandArgs<>(codec).addKey(key).add(MyKeywords.FENCE).add("POINT").add(lon).add(lat)
List<Object> response = connection.sync().dispatch(MyCommands.FENCE, new NestedMultiOutput<>(codec), args);

命令接口

命令接口通过在Java接口上声明命令方法来为您提供更高级别的抽象。它由与要调用的命令匹配的方法签名声明,并且比自定义命令更简洁:

interface Tile38 {

  @Command("NEARBY ?0 FENCE POINT ?1 ?2")
  List<Object> nearByFence(String key, double lon, double lat);
}

RedisClient client =RedisCommandFactory factory = new RedisCommandFactory(client.connect());
Tile38 commands = factory.getCommands(Tile38.class);
请注意,我不熟悉Tile38命令响应。因此,所有代码都使用List<Object>,这是最通用的返回类型。

另请参阅


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接