Redis

[Redis] 캐시(Cache)의 개념과 목적

코푸딩 2023. 3. 25. 13:40
728x90

캐싱(Caching)

  • Cache: 성능향상을 위해 데이터를 복사해 저장하는 임시 기억 장치
  • 속도가 느린 원본 저장 장치의 접근 횟수를 줄임으로 속도 향상(ex. CPU > RAM > ROM 순으로 속도가 빠름)
  • 원본 데이터가 아니기 때문에 동기화, 휘발성 문제 등을 고려해야함

 

캐시의 사용

  • Web Browser와 Web Server: 네트워크 속도로 인한 지연을 어느정도 예방할 수 있다.
  • Client와 Server: 서버 접근 리소스를 줄일 수 있다.
  • Server와 DB: 분산 서버 환경에서 DB 접근 횟수를 줄여 병목현상을 예방할 수 있다.

 

 

캐싱 관련 용어

  • 캐시 적중(Cache Hit): 캐시에 접근했을 때 원하는 데이터가 존재
  • 캐시 미스(Cache Miss): 캐시에 접근했을 때 원하는 데이터가 존재하지 않음
  • 캐시 삭제 정책(Eviction Policy): 캐시 저장 공간 확보를 위해 데이터 삭제
  • 캐시 전략: 읽기 또는 쓰기 등 캐시 운영 방식을 선택

 

캐시 전략

1. Cache-Aside(Lazy Loading)

  • 가장 일반적으로 사용되는 전략
  • 항상 캐시에 먼저 접근하고, 데이터가 없으면 원본(DB 등)에 접근해 데이터를 가져온 후 캐시에 저장하는 방식
  • 장점: 필요한 데이터만 캐시에 저장
  • 단점: 최초 데이터 접근은 상대적 느림, 데이터의 최신 여부를 보장하지 않음

2. Write-Through

  • 데이터를 저장할 때 항상 캐시를 업데이트한 후 원본(DB)에 저장
  • 장점: 캐시가 항상 동기화되어 있어 데이터의 최신 여부를 보장한다.
  • 단점: 자주 사용하지 않는 데이터도 캐시되고, 데이터 저장 시간이 증가

3. Write-Back

  • 데이터를 캐시에만 쓰고 캐시의 데이터를 일정 주기로 원본(DB)에 업데이트
  • 장점: 쓰기가 빈번하게 발생할 경우 DB 부하를 줄일 수 있다.
  • 단점: DB 업데이트 전에 캐시에 장애가 발생하면 데이터 손실 위험이 있다.

 

 

캐시 삭제 정책

캐시는 데이터 저장 비용이 크므로 적절한 저장 공간 확보를 위한 데이터 삭제 정책이 중요하다.

1. Expiration: 각 데이터의 TTL(Time-To-Live)을 성정해 시간 기반으로 삭제

2. Eviction Algorithm: 저장 공간이 부족할 경우 어떤 데이터를 삭제할지 결정하는 방식

  • LRU(Least Recently Used): 가장 오랫동안 사용되지 않는 데이터를 삭제
  • LFU(Least Frequently Used): 가장 적게 사용된 데이터를 삭제
  • FIFO(First In First Out): 먼저 들어온 데이터를 삭제
728x90