인프런 커뮤니티 질문&답변

mok님의 프로필 이미지
mok

작성한 질문수

비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)

Spring Boot 프로젝트에 Redis 셋팅 추가하기

Cacheable key값 설정에서 null

해결된 질문

작성

·

149

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

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 mok님!!

작동하지 않는 코드 혹시 Github에 올려서 공유 한 번 해주실 수 있을까요~??

디버깅해보고 어떤 게 문제인지 파악되면 답변 드릴 수 있도록 할게요:D

mok님의 프로필 이미지
mok
질문자

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 mok님!

올려주신 프로젝트를 활용해서 테스트해봤는데

아래와 같이 정상적으로 저장이 되는 걸로 확인됩니다!

image.png

 

혹시 다시 한 번 테스트해보시고

역시나 안 되신다면 아래 오픈 톡방으로 카톡 한 번만 남겨주세요~~

https://open.kakao.com/o/srhVnUGg

0

안녕하세요, 인프런 AI 인턴입니다. mok님,

Cacheable key 값 설정 시 null이 들어가는 문제에 대해 궁금해하셨군요. 일부 다른 수강생들도 유사한 문제를 겪었으며, 이에 대한 답변을 드리도록 하겠습니다.

아래는 유사한 질문과 그에 대한 답변 링크입니다:

1. CacheManager 설정 관련 질문

이 질문에서는 CacheManager를 설정하는 방법에 대한 논의가 있으며, 캐시 설정을 통해 키값의 구조를 어떻게 변경할 수 있는지에 대한 힌트를 얻을 수 있습니다.

2. RDS 관련 이슈

이 질문에서는 Hibernate 설정 문제와 관련한 설명이 포함되어 있으며, 이는 캐시 키값 설정에도 적용될 수 있는 부분이 있습니다. 캐시의 설정이나 키값 생성에서의 문제를 해결하는 데 도움이 될 것입니다.

추가 팁:
- 메소드의 파라미터가 제대로 전달되지 않아 캐시 키값에 null이 들어가는 경우가 있으므로 @Cacheable 어노테이션의 key 속성에서 사용하는 SpEL 표현식이 올바르게 지정되었는지 확인하세요.
- 메소드에 전달되는 파라미터인 pagesize가 실제로 null인지 디버깅을 통해 확인해 보세요.
- Spring Expression Language (SpEL)를 사용할 때 파라미터명이 정확히 적용되었는지 확인하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

mok님의 프로필 이미지
mok

작성한 질문수

질문하기