Cache

이준연·2026년 3월 26일

1. 캐시란?

캐시(Cache)는 자주 조회되는 데이터를 빠르게 읽기 위해 임시로 저장해두는 저장소입니다.
DB에 매번 쿼리를 날리는 대신 캐시에서 바로 꺼내 쓰기 때문에 응답 속도가 크게 향상됩니다.


2. 인메모리 캐시 vs Redis 리모트 캐시

인메모리 캐시 (Local Cache)

각 서버 인스턴스의 JVM 메모리 안에 캐시를 저장합니다.
대표적인 구현체로는 Caffeine, Guava Cache, EhCache 등이 있습니다.

장점

  • 네트워크 I/O가 없어 조회 속도가 매우 빠릅니다.
  • 별도 인프라가 필요 없어 구성이 단순합니다.

단점

  • 서버가 여러 대일 때 캐시 불일치(inconsistency) 가 발생할 수 있습니다.
    • 서버 1에서 데이터를 업데이트해도, 서버 2는 이전 캐시를 그대로 가지고 있습니다.
  • 서버가 재시작되면 캐시가 모두 사라집니다.
  • JVM 힙 메모리를 사용하므로, 저장 용량에 제한이 있습니다.

Redis 리모트 캐시 (Remote Cache)

모든 서버 인스턴스가 외부의 공통 Redis 서버를 바라봅니다.

장점

  • 모든 서버가 같은 데이터를 바라보므로 캐시 일관성이 보장됩니다.
  • 서버가 재시작되어도 캐시 데이터가 유지됩니다.
  • 저장 용량을 유연하게 확장할 수 있습니다.

단점

  • 네트워크 I/O가 추가되어 인메모리 캐시보다 약간 느립니다.
  • Redis 서버가 별도로 필요하므로 인프라 관리 포인트가 늘어납니다.

한눈에 비교

구분인메모리 캐시Redis 리모트 캐시
캐시 위치각 서버 JVM 메모리외부 Redis 서버
속도매우 빠름빠름 (네트워크 I/O 있음)
일관성낮음 (서버마다 다를 수 있음)높음 (공통 저장소)
서버 재시작 시캐시 소멸캐시 유지
적합한 상황단일 서버 / 속도 최우선다중 서버 / 일관성 중요

3. 정리

  • 인메모리 캐시: 단일 서버 or 속도 최우선 → 구현 간단, 빠르지만 일관성 주의
  • Redis 리모트 캐시: 다중 서버 or 데이터 일관성 중요 → 모든 서버가 같은 캐시 공유
  • Redis 서버는 반드시 별도로 실행되어야 하고, Spring의 RedisTemplate + Config는 그 서버에 연결하는 설정일 뿐
  • ElastiCache는 AWS에서 Redis를 관리형으로 운영하기 위한 서비스 — 필수는 아니지만 프로덕션에서 권장

profile
반갑습니다!

0개의 댓글