Попытка отправки команд RedisTimeSeries через салат (Java) в Redis. Это работало для простых команд, таких как TS.Create, но я не мог заставить работать несколько более сложные команды (такие как TS.ADD, который принимает в качестве аргументов ключ, оценку, значение) или TS.Range (который принимает аргументы и возвращает List) дляработай.
Redis работает в Linux (Ubuntu работает в Windows 10 через WSL), RedisTimeSeries устанавливается в Redis. Команды Redis и RedisTimeSeries были протестированы с использованием Redis-cli на Linux, они работают нормально. Я использую VS Code + JDK 13.0 + Maven для сборки и тестирования клиента Java для Redis. Пока команды Redis, поддерживаемые Lettuce, работают через клиента, а также некоторые простые команды RedisTimeSeries.
Фрагмент кода:
RedisCommands<String, String> syncCommands = MyRedisClient.getSyncCommands(connection);
// this works:
RedisCodec<String, String> codec = StringCodec.UTF8;
String result = syncCommands.dispatch(TS.CREATE, new StatusOutput<>(codec),new CommandArgs<>(codec).addKey("myTS"));
System.out.println("Custom Command TS.CREATE " + result);
//custom command definition:
public enum TS implements ProtocolKeyword{
CREATE;
public final byte[] bytes;
private TS() {
bytes = "TS.CREATE".getBytes(StandardCharsets.US_ASCII);
}
@Override
public byte[] getBytes() {
return bytes;
}
}
Но когда я переключил все на тестирование TS.ADD, это нене работает, хотя я добавил дополнительные аргументы соответственно. например,
String result = syncCommands.dispatch(TS.ADD, new StatusOutput<>(codec),new CommandArgs<>(codec).addKey("myTS").addValue("1000001").addValue("2.199"));
Вот исключение из прогона:
Exception in thread "main" io.lettuce.core.RedisException: java.lang.IllegalStateException
at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:129)
at io.lettuce.core.FutureSyncInvocationHandler.handleInvocation(FutureSyncInvocationHandler.java:69)
at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
at com.sun.proxy.$Proxy0.dispatch(Unknown Source)
at MyRedisClient.main(MyRedisClient.java:72)