[Database] Redis를 활용한 효율적인 캐싱 전략 이해하기

 

1. 캐싱(Caching)이란?

캐싱은 데이터를 빠르게 제공하기 위해 자주 사용하는 데이터를 메모리에 저장하는 기술이다. 하지만 캐시를 잘못 사용하면 성능 개선이 아니라 오히려 성능 저하를 초래할 수도 있다. 데이터베이스에 접근하기 전, 캐시를 확인하는 것 또한 결국 응답 시간 지연으로 이어지기 때문에, 적절한 캐싱 전략을 세우는 것이 중요하다.

 

2. Caching 용어 정리

Cache Hit 캐시에 접근했을 때 원하는 데이터가 있는 경우
Cache Miss 캐시에 원하는 데이터가 없는 경우
Eviction Policy 캐시 공간이 부족할 때 어떤 데이터를 제거할지 결정하는 정책
Caching Strategy 데이터를 언제 캐시에 저장하고, 언제 캐시를 확인할지에 대한 전략

 

캐싱은 Cache Hit 비율을 높이고, Cache Miss 비율은 낮추며, 캐시 공간을 효율적으로 관리하는 것을 목표로 한다. 캐싱 전략을 잘 세우면, Cache Hit을 높여 성능을 향상시킬 수 있다.

 

 

3. 주요 Caching 전략 비교

Cache - Aside (Lazy Loading)

개념
필요할 때만 캐시에 적재하는 전략
동작 방식
  1. 먼저 캐시에 데이터가 있는지 확인한다.
  2. 없으면 원본 데이터베이스에서 가져온다.
  3. 가져온 데이터를 캐시에 저장한다.
장점

 

  • 첫 번째 요청 이후부터는 빠른 응답이 가능하다.
  • 불필요한 데이터가 캐시에 저장되지 않는다.

 

단점

 

  • 최초 요청 시에는 데이터베이스를 조회해야 하므로 속도가 느릴 수 있다.
  • 최신 데이터가 캐시에 반영되지 않을 수 있다.

 

 

Write - Through

개념
쓰기 요청이 들어오면 항상 캐시와 DB에 동시에 반영하는 전략
동작 방식
  1. 데이터를 추가할 때 캐시에 먼저 저장한다.
  2. 이후 데이터베이스에도 저장한다.
  3. 읽을 때는 캐시에서만 읽으면 된다.
장점
  • 항상 최신 데이터를 유지할 수 있다.
  • 읽기 성능이 빠르다.
단점
  • 사용 빈도가 낮은 데이터도 캐시에 저장될 가능성이 있다.
  • 모든 쓰기 연산이 캐시를 거치므로 성능이 다소 저하될 수 있다.

 

Write - Behind

개념
쓰기 요청이 들어오면 항상 캐시와 DB에 동시에 반영하는 전략
동작 방식
  1. 데이터가 들어오면 캐시에 먼저 저장한다.
  2. 일정 개수 이상의 변경이 발생하면 한 번에 DB에 반영한다.
장점
  • 데이터베이스 부하를 줄일 수 있다.
  • 요청이 많을 때 성능이 향상될 수 있다.
단점
  • 캐시가 사라지면 아직 DB에 반영되지 않은 데이터가 유실될 가능성이 있다.
  • 데이터 일관성을 유지하기 어렵다.

 

4. Caching 전략 선택 가이드

읽기 요청이 많고, 최신 데이터가 중요하지 않은 경우 Cache-Aside
최신 데이터가 항상 유지되어야 하는 경우 Write-Through
쓰기 요청이 많고, DB 부하를 줄이고 싶은 경우 Write-Behind

 

캐싱 전략을 선택하는 데 정답은 없다. 사용하는 서비스의 특성에 맞는 전략을 선택하는 것이 중요하다. 캐싱을 잘 활용하면 읽기/쓰기와 같은 데이터 작업 성능을 개선할 수 있지만, 전략을 잘못 선택하면 오히려 시스템에 부담을 줄 수도 있다. 우리가 캐싱을 고려하는 이유는 '성능 향상'이다. 이를 위해서는 Cache Hit을 높이고 Cache Miss를 줄이는 것이 핵심이며, 서비스에 맞는 최적의 캐싱 전략을 선택함으로써 데이터 일관성과 최신성 또한 고려해야 한다.

'Database' 카테고리의 다른 글

DB Lock  (0) 2025.04.02
[Database] Redis 특징, 사용 시 고려사항 알아보기  (1) 2025.03.04
[Database] 식별관계와 비식별관계  (0) 2025.02.12