해결된 질문
작성
·
145
0
@Cacheable(cacheNames = "getBoards", key = "'boards:page:' + #page + ':size:' + #size", cacheManager = "boardCacheManager")
public List<Board> getBoards(int page, int size) {
Pageable pageable = PageRequest.of(page - 1, size);
Page<Board> pageOfBoards = boardRepository.findAllByOrderByCreatedAtDesc(pageable);
return pageOfBoards.getContent();
}
}
여기서 key = "'boards:page:' + #page + ':size:' + #size"
레디스에 저장되는 키값은 "getBoards::boards:page:null:size:null" 이렇게 저장이 됩니다. 혹시 null이 들어가는 이유가 있을까요? page와 size의 데이터도 잘 넘어오고 레디스에서 저 키값으로 조회를 하면 안에 데이터는 잘 들어가 있습니다. #page와 #size가 null인 이유가 있을까요?
답변 2
0
안녕하세요 mok님!!
작동하지 않는 코드 혹시 Github에 올려서 공유 한 번 해주실 수 있을까요~??
디버깅해보고 어떤 게 문제인지 파악되면 답변 드릴 수 있도록 할게요:D
안녕하세요 mok님!
올려주신 프로젝트를 활용해서 테스트해봤는데
아래와 같이 정상적으로 저장이 되는 걸로 확인됩니다!
혹시 다시 한 번 테스트해보시고
역시나 안 되신다면 아래 오픈 톡방으로 카톡 한 번만 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. mok님,
Cacheable key 값 설정 시 null이 들어가는 문제에 대해 궁금해하셨군요. 일부 다른 수강생들도 유사한 문제를 겪었으며, 이에 대한 답변을 드리도록 하겠습니다.
아래는 유사한 질문과 그에 대한 답변 링크입니다:
이 질문에서는 CacheManager를 설정하는 방법에 대한 논의가 있으며, 캐시 설정을 통해 키값의 구조를 어떻게 변경할 수 있는지에 대한 힌트를 얻을 수 있습니다.
이 질문에서는 Hibernate 설정 문제와 관련한 설명이 포함되어 있으며, 이는 캐시 키값 설정에도 적용될 수 있는 부분이 있습니다. 캐시의 설정이나 키값 생성에서의 문제를 해결하는 데 도움이 될 것입니다.
추가 팁:
- 메소드의 파라미터가 제대로 전달되지 않아 캐시 키값에 null이 들어가는 경우가 있으므로 @Cacheable 어노테이션의 key 속성에서 사용하는 SpEL 표현식이 올바르게 지정되었는지 확인하세요.
- 메소드에 전달되는 파라미터인 page
와 size
가 실제로 null인지 디버깅을 통해 확인해 보세요.
- Spring Expression Language (SpEL)를 사용할 때 파라미터명이 정확히 적용되었는지 확인하세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
https://github.com/parcPrive/redis-study
여기에 올렸습니다.