Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

나만의 개발 로그 | 고민 로그

Redis를 활용한 Cache 기능으로 조회 성능 개선 본문

웹 개발

Redis를 활용한 Cache 기능으로 조회 성능 개선

ultramancode 2023. 4. 21. 00:30

1. 서론

만약 사용자 수가 증가한다면 가장 먼저 느껴지는 건 DB 부하이다.

특히 자주 호출되는 "전체 유저 조회" API의 경우, 매번 DB에서 데이터를 읽어오게 되면 불필요한 쿼리 호출로 인해 성능 저하로 이어질 수 있다. 이를 해결하기 위해, Redis 캐시(Cache) 기능을 도입하여 성능을 개선했다.

 

 

2. 왜 캐시가 필요한가?

기존에는 전체 유저 조회 요청이 들어올 때마다 RDB에서 직접 데이터를 가져왔다. 따라서 만약 사용자 수가 늘어난다면 아래와 같은 문제가 발생할 것이라 생각했다.

  • 전체 조회 쿼리가 자주 호출되어 DB에 부담이 큼
  • 동일한 결과를 반복적으로 가져오면서 중복 비용이 발생
  • 응답 속도도 상대적으로 느려짐

3. 캐시 도입 전략

  • Redis를 캐시 저장소로 사용
    • Redis는 인메모리 기반 NoSQL이라서 조회 속도가 매우 빠름
    • 자주 변경되지 않는 전체 유저 목록을 Redis에 캐싱하여 성능을 높임
    • 최초 요청 시에는 DB에서 데이터를 조회하여 Redis에 저장
    • 이후 동일 요청이 오면 Redis에서 바로 응답

4. 데이터 변경 시 캐시 무효화

  • 유저 정보가 추가, 수정, 삭제될 경우에는 Redis에 저장된 캐시도 함께 갱신해줘야 한다. 이를 위해 변경이 이루어지는 부분은 @CacheEvict 애노테이션을 사용했다.

5. 성능 개선 효과

  • 개선 전: 32ms
  • 개선 후: 16ms

쿼리가 직접 날아가지 않기 때문에, 약 2배 이상의 성능 개선이 체감됐다. 특히 대량의 유저 데이터가 쌓이거나, 요청 수가 급증하는 상황에서는 훨씬 큰 차이를 만들어낼 것이라 생각된다.

 

 

Comments