본문 바로가기
Redis

Redis - 캐싱(Caching)

by sinabeuro 2023. 1. 24.
728x90

 

캐싱(Caching) 이란?

  • Cache: 성능 향상을 위해 값을 복사해놓는 임시 기억 장치
  • Cache에 복사본을 저장해놓고 읽음으로서 속도가 느린 장치로의 접근 횟수를 줄임
  • Cache의 데이터는 원본이 아니며 언제든 사라질 수 있음

컴퓨터 공학에서는 CPU와 RAM 사이의 성능 차이를 완충하기 위한 장치로 쓰인다.

CPU 가 속도가 빠름 반면에 RAM은 상대적으로 느리다. 그래서 CPU에 캐시 저장소를 두어 RAM의 데이터를 저장한다.

Cache는 비용이 비싸기 때문에 RAM 내부에서 사용할 수 없다.

 

캐시의 적용

장점: 네트워크 지연 감소, 서버 리소스 사용 감소, 병목현상 감소

원칙: 더 빠르고 값싸게 가져올 수 있다면 캐시를 사용한다.

 

캐싱 관련 개념들

캐시 적중(Cache Hit): 캐시에 접근해 데이터를 발견함

캐시 미스(Cache Miss): 캐시에 접근했으나 데이터를 발견하지 못함

캐시 삭제 정책(Eviction Policy): 캐시의 데이터 공간 확보를 위해 저장된 데이터를 삭제

캐시 전략: 환경에 따라 적합한 캐시 운영 방식을 선택할 수 있음(Cache-Aside, Write-Through..)

 

 


캐시 운영 전략

Cache-Aside(Lazy Loading)

항상 캐시를 먼저 체크하고, 없으면 원본(ex: DB)에서 읽어온 후에 캐시에 저장함

장점: 필요한 데이터만 캐시에 저장되고, Cache Miss 가 있어도 치명적이지 않음.

단점: 최초 접근은 느림, 업데이트 주기가 일정하지 않기 때문에 캐시가 최신 데이터가 아닐 수 있음.

일관성 문제를 캐시 만료 시간을 짧게 잡는 등의 방식이 있다.

 

 

Write-Through

데이터를 쓸 때 항상 캐시를 업데이트하여 최신 상태를 유지함.

장점: 캐시가 항상 동기화되어 있어 데이터가 항상 최신이다.

단점: 자주 사용하지 않는 데이터도 캐시되고, 쓰기 지연시간이 증가한다.

 

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

댓글