私は Spring Webflux + Reactive Redis を使用しています。私の目標は、Redis をファイル キャッシュとして使用することです。
最初に ~100MB ByteBuffer でキーを設定しようとしましたが、うまくいきませんでした。ファイルが実際にメモリに読み込まれていることをデバッガで再確認しましたが、確かにそうでした。「Redis は「大きな」文字列が好きではないのではないか」と考えました。だから私は以下のコードで試しましたが、まだサイコロはありません。ACL関連の問題かもしれないと思いましたが、確認したところ、デフォルトのユーザーはすべてにアクセスできます。「もしかしたら、Spring は Redis にアクセスできないのでしょうか?」いいえ、redis-cli で MONITOR 出力を確認しましたが、GET コマンドは正常に受信されていますが、SET コマンドの兆候はありません。助言がありますか?
これが私のコントローラーです:
@RequestMapping(value = "/prime", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Mono<String> prime() {
reactiveStringCommands.set(ByteBuffer.wrap("testkey2".getBytes()), ByteBuffer.wrap("test".getBytes()));
return reactiveStringCommands.get(ByteBuffer.wrap("testkey".getBytes())).map(bb -> new String(bb.array()));
}
application.properties の関連設定:
spring.redis.host=localhost
spring.redis.password=<password>
spring.redis.port=6379
redis-cli 出力 (testkey は CLI で手動で設定され、testkey2 の兆候はありません):
127.0.0.1:6379> keys *
1) "testkey"
127.0.0.1:6379> ACL list
1) "user default on #<password> ~* +@all"
127.0.0.1:6379> monitor
OK
1610406175.250768 [0 172.17.0.1:39104] "GET" "testkey"
編集:コンソールに出力されるスタックトレースもエラーの種類もないことを忘れていました。