У меня есть redis key/value store, содержащий blobs (размер в десятках MB), а jedis-клиент, который я использую в своем java-приложении, возвращает массив байтов из метода get-соединения jedis. В настоящее время я должен обернуть результат в поток, чтобы обработать байты. Есть ли альтернативы, которые позволили бы мне напрямую передать результат? других клиентов или способов использования Jedsi? спасибо за любые советы.
Пример получения значений redis как поток в java
Ответ 1
Если вы не найдете доступного существующего драйвера для выполнения того, что вам нравится, вы можете напрямую вызвать redis из своего java-кода.
Протокол, используемый сервером redis, RESP (REdis Serialization Protocol) очень прост. Я изучил его и реализовал полный Java-драйвер, чтобы проверить свои способности менее чем за полдня. Вот ссылка в спецификацию RESP. Например, вы можете начать с существующего драйвера и добавить настраиваемые функции для потоковой передачи данных по своему усмотрению.
Ответ 2
Нет упоминания types для хранения большого объекта в redis.
Но вы можете сохранить его как строку и для буферизованной потоковой передачи, вы можете использовать команду GETRANGE
redis, которая возвращает строку для заданного диапазона.
Получить длину данных с помощью GETLEN
.
Используйте redis pipeline
для создания серии команд GETRANGE
для чтения разных страниц данных. Аналогично заданию данных вы можете использовать команду SETRANGE
.
Ссылка: команды redis
Пожалуйста, найдите конкретную реализацию упомянутых команд redis в вашем клиенте redis java.