2026-02-14

Cache(캐시)

캐시란?

자주 사용하는 데이터를 임시로 저장해두는 고속 메모리

  • CPU는 엄청 빠른데, RAM이나 디스크는 상대적으로 느리다.
  • ⇒ 느린 저장소에 매번 접근하지 않도록
  • 자주 쓰는 데이터를 가까운 곳에 복사해두는 것

메모리 계층 구조

Register
  ↓
L1Cache
  ↓
L2Cache
  ↓
L3Cache
  ↓
RAM
  ↓
SSD / HDD
  • 위로 갈수록 빠르지만, 용량은 작고 가격은 비싸다.

캐시의 핵심 원리: 지역성(Locality)

  • 시간 지역성 (Temporal Locality) 최근에 사용한 데이터는 다시 사용될 가능성이 높다.
  • 공간 지역성 (Spatial Locality) 특정 데이터를 사용하면 그 주변 데이터도 함께 사용할 가능성이 높다.

캐시 동작 과정

  1. CPU가 데이터 요청
  2. 캐시에 있는지 확인
    • 있으면 → Cache Hit
    • 없으면 → Cache Miss
  3. Miss면 RAM에서 가져와 캐시에 저장

캐시 교체 정책 (Replacement Policy)

캐시 공간은 제한적이기 때문에 뭐를 지울지 정해야 함

(페이지 교체 정책과 개념적으로 유사)

  • FIFO(First In First Out) : 메모리에 가장 먼저 올라온 데이터를 우선적으로 교체하는 알고리즘
  • LRU(Least Recently Used) : 가장 오랫동안 사용하지 않은 데이터를 교체하는 알고리즘
  • LFU(Least Frequently Used) : 참조 횟수가 가장 낮은 데이터를 교체하는 알고리즘
  • NUR(Not Used Recently) : 최근에 사용하지 않은 데이터를 교체하는 클럭 알고리즘
  • OPT(Optimal) : 앞으로 가장 오랫동안 사용하지 않을 데이터를 찾아 교체하는 알고리즘

캐시는 어디에 쓰일까?

  • CPU 캐시
    • L1/L2/L3
  • 브라우저 캐시
    • 이미지, CSS, JS 저장
    • HTTP Cache-Control
  • 서버 캐시
    • Redis
    • CDN
    • DB 쿼리 캐시

장점

  • 애플리케이션 성능 개선
  • 속도 향상
  • 백엔드 부하 감소
  • 네트워크, 데이터베이스 비용 절감

단점

  • 데이터 불일치 문제
  • 캐시 무효화(Cache Invalidation) 복잡

웹서비스에서 캐시가 적용되는 예

  • 클라이언트: HTTP 캐시 헤더, 브라우저
  • 네트워크: DNS 서버, HTTP 캐시 헤더, CDN, 리버스 프록시
  • 서버 및 데이터베이스: 키-값 데이터 스토어(e.g. Redis), 로컬 캐시(인-메모리, 디스크)

참고자료

  • https://velog.io/@wanzekim/cs-cache
  • https://dev-baik.tistory.com/159
  • https://lildev.tistory.com/89
  • https://letstry.tistory.com/57

results matching ""

    No results matching ""