Redis¶
개요¶
Redis는 데이터를 메모리(RAM)에 두고 읽고 쓰는 인메모리 데이터 저장소예요. 디스크가 아니라 메모리에서 동작하니, 응답이 몇 밀리초 수준으로 굉장히 빨라요. "주 저장소"라기보다는, 빠르게 읽고 써야 하는 역할을 전담하는 보조 저장소로 쓰는 게 일반적이에요.
우리 제품에서 Redis가 맡는 역할은 크게 세 가지로 나뉘어요 — 자주 조회되는 데이터를 미리 담아 두는 캐시, 사용자 상태를 빠르게 가져오는 세션 저장소, 그리고 시간이 걸리는 작업을 밀어 넣는 작업 큐의 백엔드예요.
상태 배지¶
- 🟢 운영 — 캐시·세션·큐(Bull)처럼 "빠르게 읽고 쓰는" 역할로 실제 제품에서 쓰고 있어요.
핵심 개념¶
- 인메모리 저장 — 데이터를 메모리에 두고 처리해 디스크 접근 없이 빠른 응답을 냅니다. 대신 메모리 크기에 저장 용량이 제한돼요.
- 다양한 자료구조 — 단순 키-값뿐 아니라 List·Set·Sorted Set·Hash 같은 자료구조를 기본으로 제공해요. 큐·랭킹·태그 같은 패턴을 한 명령으로 처리할 수 있어요.
- 지속성(옵션) — 기본은 메모리지만, AOF(RDBMS의 로그 같은 명령 기록)나 RDB(스냅샷)로 디스크에 백업할 수 있어요. 캐시 용도라면 짧은 지속성 설정으로 충분한 경우가 많아요.
- TTL (Time To Live) — 키에 만료 시간을 둬서, 일정 시간이 지나면 자동으로 삭제해요. 캐시처럼 "일정 시간만 유효한" 데이터에 잘 맞아요.
- 관리형 서비스 — AWS ElastiCache처럼 관리형으로 제공하는 환경에서는 직접 설치·운영하지 않고 캐시 계층을 확보할 수 있어요.
사용 사례 / 실제 적용¶
Redis는 즉답이 필요한 부분을 전담해요.
- 세션 저장 — 사용자가 로그인한 상태를 빠르게 읽고 씁니다. 여러 서버가 같은 세션을 공유해야 할 때 Redis가 공통 저장소 역할을 해요.
- 캐시 — 자주 조회되는 응답이나 계산 결과를 미리 담아 둬서, 주 저장소(PostgreSQL)의 부하를 줄여요. TTL로 일정 시간만 유효하게 해요.
- rate limit (요청 제한) — 짧은 시간 안에 너무 많은 요청이 들어오는 걸 막을 때, 카운터를 빠르게 올려 규칙을 적용해요.
- semantic cache (의미 캐시) — LLM 호출처럼 비싼 작업의 결과를 재사용해서 비용을 아껴요.
- 작업 큐 (Bull + Redis) — Redis를 작업 큐의 백엔드로 씁니다. 시간이 걸리는 작업을 큐에 밀어 넣고, 순차·병렬로 처리해요. Bull이 Redis의 자료구조를 이용해 작업의 대기·처리·지연을 관리해요.
Redis는 "빠른 속도"라는 한 축을 담당하지만, 영구 보관이 필요한 정합성 데이터는 PostgreSQL이 맡아요. 저장소를 역할로 나눈 대표적인 예다.
심화 챕터¶
Redis의 핵심 원리는 아래 챕터에서 공식 문서를 기준으로 더 깊게 다뤄요.
- 데이터 타입 — STR·LIST·HASH·SET·ZSET 언제 어떤 걸
- 영속화 — RDB·AOF와 용도별 영속화 선택
- Pub/Sub 메시징 — 발행·구독과 채널 스코핑
- 캐시 패턴 — cache-aside, TTL, 퇴출 정책
더 알아보기¶
- 공식 문서 (1차)
- Redis — redis.io/docs
- AWS ElastiCache — docs.aws.amazon.com/elasticache
- 큐레이션/블로그 (2차)
- Redis 공식 블로그 — redis.com/blog