如何在 Java 中执行纯 Redis 查询
How to execute plain Redis queries in Java
我需要在 Java 代码中对 Redis 进行原生查询。
是否有 Java 库或其他方法可以做到这一点?
我需要这样的东西:
someRedisClient.execute("FT.SEARCH SOME_INDEX (@foo:bar*)")
我在lettuce、lettusearch、redisson中没有找到这样的功能。
Jedis 有 sendCommand
方法支持你想要的但有一个警告。方法签名如下:
Object sendCommand(ProtocolCommand cmd, byte[]... args)
Object sendCommand(ProtocolCommand cmd, String... args)
如您所见,您必须有一个代表实际命令的 ProtocolCommand 的实现。通常由 enum
.
完成
public enum Command implements ProtocolCommand {
FT_SEARCH("FT.SEARCH");
private final byte[] raw;
private Command(String str) {
raw = str.getBytes();
}
@Override
public byte[] getRaw() {
return raw;
}
}
之后,
jedis.sendCommand(Command.FT_SEARCH, "SOME_INDEX", "(@foo:bar*)");
是的,命令参数是单独的字符串,而不是由 space 连接而成。
我需要在 Java 代码中对 Redis 进行原生查询。 是否有 Java 库或其他方法可以做到这一点?
我需要这样的东西:
someRedisClient.execute("FT.SEARCH SOME_INDEX (@foo:bar*)")
我在lettuce、lettusearch、redisson中没有找到这样的功能。
Jedis 有 sendCommand
方法支持你想要的但有一个警告。方法签名如下:
Object sendCommand(ProtocolCommand cmd, byte[]... args)
Object sendCommand(ProtocolCommand cmd, String... args)
如您所见,您必须有一个代表实际命令的 ProtocolCommand 的实现。通常由 enum
.
public enum Command implements ProtocolCommand {
FT_SEARCH("FT.SEARCH");
private final byte[] raw;
private Command(String str) {
raw = str.getBytes();
}
@Override
public byte[] getRaw() {
return raw;
}
}
之后,
jedis.sendCommand(Command.FT_SEARCH, "SOME_INDEX", "(@foo:bar*)");
是的,命令参数是单独的字符串,而不是由 space 连接而成。