当前位置:  开发笔记 > 编程语言 > 正文

Redis生菜:发送自定义命令

如何解决《Redis生菜:发送自定义命令》经验,为你挑选了1个好方法。

我在Java上使用tile38.com和lettuce.io。我正在尝试根据此处NEARBY fleet FENCE POINT 33.462 -112.268 6000的文档输入链接描述发送自定义命令,但我不知道该怎么做。

我一直CommandType在莴苣中使用,但是找不到发送的方法NEARBY。有人知道我该怎么做吗?

谢谢



1> mp911de..:

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

自定义命令

使用自定义命令,您基本上可以定义一种实现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 args = new CommandArgs<>(codec).addKey(key).add(MyKeywords.FENCE).add("POINT").add(lon).add(lat)
List response = connection.sync().dispatch(MyCommands.FENCE, new NestedMultiOutput<>(codec), args);


命令界面

命令接口通过在Java接口上声明命令方法,为您提供了更高层次的抽象。它是由与您要调用的命令相匹配的方法签名声明的,并且比自定义命令更详细:

interface Tile38 {

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

RedisClient client = …
RedisCommandFactory factory = new RedisCommandFactory(client.connect());
Tile38 commands = factory.getCommands(Tile38.class);


请注意,我对Tile38命令响应不熟悉。因此,所有代码都使用List最通用的返回类型。

也可以看看

生菜文档:自定义命令。

生菜文档:命令界面。

生菜JavaDoc :BaseRedisCommands.dispatch(…)

生菜JavaDoc :CommandOutput

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有