저는 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"
편집 : 스택 추적이나 콘솔에 출력되는 오류 유형이 없음을 언급하는 것을 잊었습니다.