프로젝트

매장 예약 - Redis 캐시 적용

Lv.1 ysg 2024. 2. 22. 00:34

 

매장 예약 서비스에도 성능 개선을 해보기 위해 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

 

스프링 Cache With Redis

스프링에서 캐시 스프링은 캐시를 다음과 같이 정의해요. > Spring Framework provides support for transparently adding caching into an existing Spring application. Similar to

velog.io

https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EC%BA%90%EC%8B%9CCache-%EC%84%A4%EA%B3%84-%EC%A0%84%EB%9E%B5-%EC%A7%80%EC%B9%A8-%EC%B4%9D%EC%A0%95%EB%A6%AC#%EC%BA%90%EC%8B%9C_%EC%93%B0%EA%B8%B0_%EC%A0%84%EB%9E%B5_write_cache_strategy

 

[REDIS] 📚 캐시(Cache) 설계 전략 지침 💯 총정리

Redis - 캐시(Cache) 전략 캐싱 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술이다. 일반적으로 캐시(cache)는 메모리(RAM)를 사용하기 때문에 데이터베이스 보다 훨씬 빠

inpa.tistory.com

https://adjh54.tistory.com/165

 

[Java] Spring Boot Cache 이해하고 설정하기 -1 : 정의, 환경 설정

해당 글에서는 API Cache에 대해서 이해하고 REST API 환경에서 이를 적용하는 방법에 대해서 작성한 글입니다. 1) 개발환경 구성 💡 개발환경은 MyBatis를 기반으로 RDBMS로부터 전달받은 데이터를 캐

adjh54.tistory.com