chr*_*con 4 java project-reactor
我正在学习Flux和Mono,并在尝试检查Redis中是否不存在键时碰壁。我需要过滤通量,并且如果键存在,则要删除该元素。我在文档中找不到执行此操作的方法,我只能过滤是否存在该密钥。我需要相反。
client.request(MWS_EU, Orders, ordersRequest, ListOrdersResponse.class)
.flatMapIterable(listOrdersResponse -> listOrdersResponse.getOrders())
.filterWhen(order -> isNewOrder(order.getOrderId()))
.flatMap(...)
Run Code Online (Sandbox Code Playgroud)
和检查redis:
private Mono<Boolean> isNewOrder(String orderId) {
return redisOrders.opsForValue().get(orderId).hasElement();
}
Run Code Online (Sandbox Code Playgroud)
有什么干净的方法可以过滤我的Flux以仅在键不存在时保留元素?
我不想用block()
。
您可以将方法更改为以下内容:
private Mono<Boolean> isNewOrder(String orderId) {
return redisOrders.opsForValue().get(orderId).hasElement().map(b -> !b);
}
Run Code Online (Sandbox Code Playgroud)
通过使用map()
方法,您可以将所返回的值求反hasElement()
。