Пару дней назад я столкнулся с той же проблемой и в итоге использовал операцию collectMap
. Мой вариант использования требовал, чтобы я извлек объект Processor из redis, который хранился в виде хэшей, поэтому для этого я обнаружил, что могу использовать следующее:
operations.opsForHash().entries("processor") // Returns a list of Entry<String,String>
Список записей должен быть собран как для карты, чтобы его можно было сопоставить с объектом, используя ObjectMapper
. Следующая лямбда-цепочка извлекает все хэши из ключа «процессор», отображает их как карту с помощью collectMap
, а затем с помощью функции .map()
преобразует эту карту в объект процессора.
Mono<Processor> processor = operations.opsForHash()
.entries("processor")
.collectMap(Entry::getKey,Entry::getValue)
.map(entryMap -> new ObjectMapper().convertValue(entryMap, Processor.class));