我是个响应式编程新手。我正在尝试以响应式的方式查询Redis,使用Spring Webflux获取smembers,然后使用该结果查询hmget。sMembers查询的结果是Flux>,hMGet期望第二个参数作为集合。我不确定如何以正确的方式编写此函数。有没有人能帮我纠正一下。
return Flux.just(keys)
.map(key -> {
return reactiveClusterSetCommands.sMembers(ByteBuffer.wrap(key.getBytes())).flatMap(a -> reactiveClusterHashCommands.hMGet(ByteBuffer.wrap(hash(key).getBytes()),a));
});
发布于 2019-06-07 19:36:34
使用Flux.collectList()
将Flux<String>
收集到集合成员的Mono<List<String>>
中,然后使用flatMapMany
调用包含集合成员列表的HMGET
。
Flux.fromIterable(keys)
.flatMap(key -> {
ByteBuffer keyBytes = ByteBuffer.wrap(key.getBytes());
Mono<List<String>> setMembersMono = commands.sMembers(keyBytes).collectList();
ByteBuffer hashKeyBytes = ByteBuffer.wrap(hash(key).getBytes());
setMembersMono.flatMapMany(setMembers -> commands.hMGet(hashKeyBytes, setMembers));
});
https://stackoverflow.com/questions/56487759
复制相似问题