본문 바로가기
Database2026년 6월 15일2분 읽기

Redis 캐시 무효화 전략과 흔한 함정

YS
김영삼
조회 1170
Redis 캐시 무효화 전략과 흔한 함정

핵심 요약

캐시는 ① 적당한 TTL로 자동 만료, ② 데이터 변경 시 해당 키를 삭제(write-invalidate)가 기본이다. 완벽한 일관성보다 "조금 낡아도 되는 시간"을 정하는 게 핵심이고, 인기 키가 동시에 만료돼 DB로 몰리는 스탬피드를 막는 장치가 필요하다.

1. 전략

패턴설명
Cache-Aside읽기 미스 시 DB→캐시 채움(가장 흔함)
Write-Through쓰기 시 캐시도 갱신
TTL + 무효화안전망 TTL + 변경 시 삭제

2. 스탬피드 방지

  • TTL에 지터(랜덤 ±)를 줘 동시 만료 분산
  • 재계산은 락(SETNX)으로 한 요청만, 나머지는 잠깐 옛 값
  • 인기 키는 만료 전 비동기 갱신(early recompute)

3. 함정

  • TTL 없이 캐시하면 절대 안 바뀌는 유령 데이터가 생긴다
  • 키 네이밍 규칙이 없으면 무효화 대상을 못 찾는다
  • 캐시와 DB 동시 갱신은 순서·실패 시 불일치 — "DB 먼저, 캐시 삭제" 순서가 무난

자주 묻는 질문

캐시 스탬피드가 뭔가요?

인기 키가 동시에 만료되면 그 순간 모든 요청이 DB로 몰려 부하가 폭증합니다. TTL 지터, 재계산 락, 사전 갱신으로 완화합니다.

업데이트할 때 캐시를 갱신할까 삭제할까요?

삭제가 단순하고 안전합니다. 다음 읽기에서 최신값으로 다시 채워집니다. 갱신은 동시성에서 옛 값을 덮어쓸 위험이 있습니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록