네트워크

캐시(Cache)가 뭔데?

cloudlim 2024. 1. 2. 22:05

캐시(Cache)란?

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소


데이터나 값을 왜 캐시에 복사해놓는가?

Client가 DB에 보다 빠르게 접근할 수 있으니깐

  • Client는 원하는 걸 빨리 얻을 수 있어 좋고!
  • DB는 부하가 생기지 않아서 좋고!

캐시란 놈의 등장

그 배경에는 파레토 법칙이 있다.

파레토법칙이란 결과의 80%는 20% 원인으로부터 비롯된다는 것이다.

그니깐 Client가 원하는 결과의 80%도 데이터의 20%로 커버가 될 수 있을 것이란 계산인 셈이다.


그럼 캐시를 어떻게 써야하는가?

잘 써야한다. 전략적으로: 캐싱 전략(Caching Strategies)

  • Read Cache Strategy: 캐시를 읽는 전략
    • Look Aside: 캐시에 찔러보고 없으면 DB에서 데이터 가져오는 전략
      • 캐시와 DB 분리로 캐시 장애 대비에 Good
      • 원하는 데이터만 쏙쏙 Cache에 저장해야함
      • 근데 DB랑 Cache 데이터 정합성 문제가 생길 순 있음
      • 단건 호출 빈도가 높은 서비스에는 비추
      • 계속 같은 쿼리 쓰는 서비스에 적합(캐시에 있는 거 갖다 쓰면 되니깐)
    • Read Through: 캐시만 바라보는 전략. Server가 요청한 데이터가 Cache에 없으면 Cache가 DB 조회해서 자체적으로 값 업데이트함. 그래서 Server는 Cache만 보게됨
      • 캐시 장애 발생하면 망..(서비스 이용에 차질 발생) → 그래서 이 전략 사용 시 Cluster로 구성해서 가용성 높이길 추천
      • 캐시-DB 간 데이터 동기화가 항상 이뤄져 데이터 정합성 문제X
  • Write Cache Strategy: 캐시에 데이터를 입력하는 전략
    • Write Back: Server 가 Cache store에 값 저장하면 일정주기 배치 작업을 통해 DB에 저장함(캐시가 일종의 Queue 역할을 하게되는 셈)
      • Wrtie가 빈번한 경우 추천
      • 배치로 DB에 저장하기에 쓰기 쿼리 회수 비용과 부하 줄일 수 있음
      • 근데 캐시 오류 발생하면 데이터 영구 소실..근데 또 데이터베이스 장애 발생해도 서비스 정상 이용할 수 있다는 장점이 있기도 함.
      • 자주 안쓰이는 불필요한 리소스도 Cache Store에 저장함
    • Write Through: Cache와 DB에 동시 데이터 저장(일단 Cache store에 저장하지만 DB에 바로 저장됨)
      • 캐시와 DB 항상 동기화
      • 캐시 장애 발생했다고 데이터 유실 생기면 안되는 상황에 적합
      • 매 요청마다 Write 2번(Cache store, DB)해야되서 좀 느리고 어찌보면 리소스 낭비일 수도 있음

 


출처

 

 

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

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

inpa.tistory.com

 

 

캐시란 무엇인가

# 캐시(Cache) > 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한

velog.io