2026-02-14
Cache(캐시)
캐시란?
자주 사용하는 데이터를 임시로 저장해두는 고속 메모리
- CPU는 엄청 빠른데, RAM이나 디스크는 상대적으로 느리다.
- ⇒ 느린 저장소에 매번 접근하지 않도록
- 자주 쓰는 데이터를 가까운 곳에 복사해두는 것
메모리 계층 구조
Register
↓
L1Cache
↓
L2Cache
↓
L3Cache
↓
RAM
↓
SSD / HDD
- 위로 갈수록 빠르지만, 용량은 작고 가격은 비싸다.
캐시의 핵심 원리: 지역성(Locality)
- 시간 지역성 (Temporal Locality) 최근에 사용한 데이터는 다시 사용될 가능성이 높다.
- 공간 지역성 (Spatial Locality) 특정 데이터를 사용하면 그 주변 데이터도 함께 사용할 가능성이 높다.
캐시 동작 과정
- CPU가 데이터 요청
- 캐시에 있는지 확인
- 있으면 → Cache Hit
- 없으면 → Cache Miss
- 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