reactive 编程+redisson 如何分页的问题

1次阅读

共计 697 个字符,预计需要花费 2 分钟才能阅读完成。

  • SpringBoot WebFlux 3.1.0 + redisson 3.27.1 + redis stack 7 单机
  • webflux control 要求业务代码返回 mono
    @Bean
    public RouterFunction route(CacheHandler cacheHandler) {return RouterFunctions.route()
                .GET("......", cacheHandler::xxxxxxx)
                .build();
  • redissonReactiveClient 是 client

    • redissonReactiveClient.getSearch(codec).search(…..); 查询 redis 返回 mono
    • 所以 cacheHandler::xxxxxxx 中 call 上面的查询
    • 如果做分页的话,SearchResult 里面有 total 和 List 当前页数据
  • 但是我如何在一个请求中查出所有数据呢,也就是 reactive 编程怎么搞个循环查询啊

    • 只能将第一次查询的 mono block() 拿到 total 吗,但是貌似 reactive 编程不该是这个写法 …
    • 如果 Mono cc = client.search(.. 第一页数据).cache();

      • 然后 return cc.flatMap(c -> client.search(.. c.getTotal, 然后传参剩下所有数据)).concatWith(cc).collectList();
      • 测试之后返回空的,因为 client.search 本身也是异步多线程的,这个操作在另一个线程进行,webflux 就给我空数据了,还有就是第二个 search 也拿不到真正的 total

所以这个该咋做啊

正文完
 0