Пример получения значений redis как поток в java

У меня есть redis key/value store, содержащий blobs (размер в десятках MB), а jedis-клиент, который я использую в своем java-приложении, возвращает массив байтов из метода get-соединения jedis. В настоящее время я должен обернуть результат в поток, чтобы обработать байты. Есть ли альтернативы, которые позволили бы мне напрямую передать результат? других клиентов или способов использования Jedsi? спасибо за любые советы.

Ответ 1

Если вы не найдете доступного существующего драйвера для выполнения того, что вам нравится, вы можете напрямую вызвать redis из своего java-кода.

Протокол, используемый сервером redis, RESP (REdis Serialization Protocol) очень прост. Я изучил его и реализовал полный Java-драйвер, чтобы проверить свои способности менее чем за полдня. Вот ссылка в спецификацию RESP. Например, вы можете начать с существующего драйвера и добавить настраиваемые функции для потоковой передачи данных по своему усмотрению.

Ответ 2

Нет упоминания types для хранения большого объекта в redis.

Но вы можете сохранить его как строку и для буферизованной потоковой передачи, вы можете использовать команду GETRANGE redis, которая возвращает строку для заданного диапазона.

Получить длину данных с помощью GETLEN. Используйте redis pipeline для создания серии команд GETRANGE для чтения разных страниц данных. Аналогично заданию данных вы можете использовать команду SETRANGE.

Ссылка: команды redis

Пожалуйста, найдите конкретную реализацию упомянутых команд redis в вашем клиенте redis java.