pagedModel fetchJoin 적용후 redis Cache 적용시 발생하는 오류 해결
2024. 7. 23. 20:13ㆍTIL
✔ 해결
PagedModel은 단순한 데이터 구조가 아닌, 페이지네이션 정보와 함께 리소스 링크 정보를 포함하고 있고 복잡한 구조를 가지고 있기 때문에 직렬화,역직렬화를 진행하는데 문제가 생긴다. 이를 해결하기 위해서는
Redis를 사용할 때 PagedModel을 직접 캐시하기보다는 JSON 형식으로 직렬화하여 저장하거나, 페이지별로 데이터를 캐시하고 페이지네이션을 처리하는 것 또한 하나의 방법이 될 수 있다.
하지만 데이터만 캐시하고 후에 캐시된 데이터를 pagedModel 형태로 재조립 하는 과정은 결국에 캐시를 사용하려는 목적(서버의 성능 부하 개선)에는 부합하지 않는다고 판단하여 최종적으로 pagedModel을 사용하지 않고 page 객체를 사용하는 것으로 해결하였다.
@Cacheable(value = ["promotionCache"], key = "#page + '-' + #size + '-' + #sortBy + '-' + #direction")
override fun getPromotionWineList(
page: Int,
size: Int,
sortBy: String,
direction: String
): Page<PromotionWineResponse> {
val pageable: Pageable = PageRequest.of(page, size, getDirection(direction), sortBy)
return winePromotionRepository.findPromotionWineList(pageable)
}
'TIL' 카테고리의 다른 글
소셜 로그인 오류 해결 (0) | 2024.07.25 |
---|---|
소셜 로그인 Failed to fetch 오류 (1) | 2024.07.24 |
pagedModel fetchJoin 적용후 redis Cache 적용시 발생하는 오류 (0) | 2024.07.22 |
QueryDslSupport (0) | 2024.07.21 |
Serializing PageImpl instances as-is is not supported 경고 발생 (0) | 2024.07.20 |