-
Notifications
You must be signed in to change notification settings - Fork 3
Redis Cache 적용기
김승진 edited this page Jul 13, 2024
·
2 revisions
태그: PORTFOLIO 날짜: 2024년 3월 15일 참여자: 진주원, 김승진
사용자에게 경로를 제공하기 위해 Kakao, Naver, Tmap Open API를 사용한다. 위 API 제공에 있어 호출까지의 시간이 소요되고 비용 낭비가 발생
- 이미 반환된 경로를 사용자가 재사용하는 경우가 많기 때문에 경로를 임시 메모리에 저장하는 로직 필요
- ‘경로’라는 데이터 특성 상 한번 참조된 값에 대해 변경이 자주 일어나지 않음
- Redis Cache를 이용하여 Open API의 반환값을 일부 저장하여 사용자에게 제공
- @CachePut과 @Cacheable Annotation을 사용하여 API에 레디스 캐시 적용
@CachePut(
value = "surroundPlace",
key = "'searchSurroundPlace'.concat(#surroundPlaceRequest.toString())",
cacheManager = "cacheManager")
public PlaceResponse searchSurroundPlace(final SurroundPlaceRequest surroundPlaceRequest) {
return getPlaceResponse(surroundPlaceRequest);
}
@Cacheable(
value = "surroundPlace",
key = "'searchSurroundPlace'.concat(#surroundPlaceRequest.toString())",
cacheManager = "cacheManager",
unless = "#result.results.size() <= 0")
public PlaceResponse searchSurroundPlaceWithCache(
final SurroundPlaceRequest surroundPlaceRequest) {
return getPlaceResponse(surroundPlaceRequest);
}
Redis Cache를 적용하였을 때 성능 분석을 위해 다음과 같은 시나리오를 세우고 테스트 진행
- 회원가입 수행
- 보행자 경로 API를 요청하여 수행
- 추가로, 매번 OpenAPI를 호출하지 않기 때문에 네트워크 비용을 아끼는 효과도 있음
- Redis Cache를 사용할 경우 사용하지 않은 경우에 비해 4.12배의 속도 성능 향상
- Open API를 중복 요청하지 않아 네트워크 비용 절감
- CachePut를 통해 사용자의 요청 경로가 변경된 경우 기존 Cache값을 삭제하고 변경된 경로를 저장하고 제공하여 서비스상 유연성 향상