【问题标题】:Redis Reactive sMembers and hMGet FluxRedis Reactive sMembers 和 hMGet Flux
【发布时间】:2019-10-22 13:46:19
【问题描述】:

我是响应式编程的新手。我正在尝试使用 Spring Webflux for smembers 以反应方式查询 Redis,然后使用该结果需要查询 hmget。 sMembers 查询的结果是 Flux>,hMGet 是期待的 第二个参数为 Collection。我不确定如何以正确的方式编写此函数。有人可以帮我纠正这个问题吗?

    return Flux.just(keys)
            .map(key -> { 
                 return reactiveClusterSetCommands.sMembers(ByteBuffer.wrap(key.getBytes())).flatMap(a ->  reactiveClusterHashCommands.hMGet(ByteBuffer.wrap(hash(key).getBytes()),a));
            });

【问题讨论】:

    标签: reactive-programming spring-webflux spring-data-redis


    【解决方案1】:

    使用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));
      });
    

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 2020-02-14
      • 2021-05-26
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多