매장 예약 서비스에도 성능 개선을 해보기 위해 Redis 캐시를 적용해 보기로 했다
그래서 생각해보니 특정 매장의 예약 조회 이부분이 사용자의 요청이 많을 것 같아 캐시를 적용 하기로 했다
캐시 적용
위와 같이 @Cacheable 어노테이션을 붙여주어 캐시를 저장하도록 했다
캐시 적용 결과
캐시를 적용해봤더니 응답속도를 939ms -> 26ms 로 개선하였다 이렇게 보니까 확실히 체감되는것 같다
하지만 아래와 같이 동작했을때 문제가 발생한다
1. 특정 매장의 예약 정보를 조회한다 (이때 캐시가 저장됨)
2. 그 매장에 예약 요청을 한다 (저장)
3. 다시 그 매장의 예약 정보를 조회한다
이렇게 되면 3번에서는 2번에서 요청한 예약 정보는 조회되지 않는다 왜냐하면 캐시에 이미 해당 키로 저장되어 있기 때문에 다시 조회 할때 db에서 조회해오지 않기 때문이다 그래서 2번에서 예약 요청을 할때 @CacheEvit 을 통해 캐시 삭제를 해주도록 수정했다 그렇게 되면 캐시가 삭제되어 있기 때문에 3번에서 다시 조회 해올수 있기 때문이다
캐시 삭제
위와 같이 @CacheEvict 어노테이션을 붙여주어 캐시를 삭제하여 해결했다
이렇게 해서 매장 예약 서비스에 캐시도 적용시켜보았다
참고 링크
https://velog.io/@wlsgur1533/%EC%8A%A4%ED%94%84%EB%A7%81-Cache-With-Redis
'프로젝트' 카테고리의 다른 글
핀테크 서비스 - 인덱스 사용 (0) | 2024.04.10 |
---|---|
매장 예약 서비스 - 동시성 문제 (0) | 2024.02.19 |
매장 예약 서비스 - Spring Jpa 연관 관계 (0) | 2024.02.18 |
배당금 프로젝트 (1) | 2024.01.31 |
날씨 일기 프로젝트 (0) | 2024.01.27 |