我正在使用 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"
编辑:忘了提到没有堆栈跟踪,也没有任何类型的错误输出到控制台。