캐시 기본과 캐시 계층
핵심
캐시 기본과 캐시 계층
캐시가 통하는 조건
- 읽기가 쓰기보다 훨씬 많다 (읽기:쓰기 10:1 이상)
- 접근이 일부 데이터에 집중된다 (상위 20% 키가 트래픽 대부분)
- 약간 낡은 데이터를 허용할 수 있다
- 원본 조회가 비싸다 (복잡한 조인, 외부 API 호출)
요청 경로의 캐시 계층
[브라우저 캐시]
|
[CDN / 엣지]
|
[앱 로컬 캐시]
|
[Redis 등 분산 캐시]
|
[DB 버퍼 풀] -> [디스크]
실무 포인트
- 히트율 = hits / (hits + misses). Redis는
INFO stats의keyspace_hits/keyspace_misses로 계산 - 히트율이 낮으면 메모리 증설보다 키 설계와 TTL을 먼저 의심한다
- 쓰기가 잦은 데이터를 캐싱하면 무효화 비용이 이득을 넘는다
- 캐시는 원본을 대신하지 못한다. DB가 죽으면 캐시만으로 오래 버티지 못한다
면접에서 이렇게 나옵니다
- Q.캐시를 도입하기 전에 무엇을 먼저 확인해야 하나요?
- Q.캐시 히트율이 낮을 때 어떤 순서로 원인을 찾나요?
- Q.캐시에 넣으면 안 되는 데이터는 어떤 것인가요?