簡體   English   中英

ReactiveRedisOperations 不在 Redis 中保存 object

[英]ReactiveRedisOperations not saving object in Redis

我正在使用 ReactiveRedisOperations 將數據對象保存在 Redis 中,並且此調用根據 api 返回一個 Mono。我注意到如果我不對此 Mono 返回執行任何操作,則此代碼不會執行任何操作。 只是想了解這是如何工作的。 我希望下面的代碼在此循環中保存每個 Object 到 Redis,但是它沒有這樣做,請分享這里缺少的內容。

 for (SomeObject obj : list) {
 reactiveRedisOperations.opsForHash().put(key, hashKey, obj).map(b -> obj); }

另一方面,如果我通過 rest 服務響應從類似代碼返回 Mono 結果,而不是它似乎正確保存在 Redis 中,不知道為什么會這樣。 謝謝

這是反應流的怪癖,而不是 Lettuce。

與創建時開始執行的可完成未來不同,stream 在消費者訂閱它之前不會開始執行(不發送命令)。

我相信這是為了促進背壓,因此生產者不會向緩慢的消費者發送大量數據。

一些不錯的閱讀 -> https://blog.knoldus.com/working-with-project-reactor-reactive-streams/

如果您將Mono返回到基礎 web 框架,該框架通常會處理對此Monosubscribe (ing),則相應的操作將觸發導致任何副作用,例如在您的Redis數據存儲中創建數據。

如果您希望執行您的操作,您應該做同樣的事情,即subscribe發布者( MonoFlux )或將這些數據包裝器返回給任何調用 function 的人,您知道會像上述示例那樣為您處理:

Flux.fromIterable(list)
    .flatMap(obj -> reactiveRedisOperations.opsForHash().put(key, hashKey, obj))
    .subscribe();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM