2025년 7월 26일
이론
조회 : 30|2분 읽기

[1편] Redis란 무엇인가: 설계 철학부터 핵심 기능·운영·캐시 전략까지


[1편] Redis란 무엇인가: 설계 철학부터 핵심 기능·운영·캐시 전략까지

Redis의 탄생 배경과 설계 철학, 풍부한 네이티브 자료구조, 영속성·Eviction 정책, 고가용성·샤딩, 모듈 생태계, 캐시 전략까지 한눈에 살펴보는 1편 가이드입니다.

1. 도입: 왜 Redis인가?

웹 서비스에서 로그인 세션, 실시간 랭킹, 인증번호처럼 수명이 짧고 요청 빈도가 높은 데이터를 디스크 기반 DB로 처리하면, 작은 지연이 곧 사용자 이탈로 이어집니다. Redis는 이러한 문제를 해결하기 위해 탄생했으며, 오늘날에도 거의 모든 대규모 시스템에서 핵심 역할을 담당하고 있습니다.

2. 이름 뒤에 숨은 설계 철학

“Redis”는 흔히 “REmote DIctionary Server”라 알려져 있지만, 실제로는 속도를 강조하기 위한 브랜드명입니다.
  • 싱글 스레드 이벤트 루프: epoll 기반 I/O 멀티플렉싱으로 단일 스레드에서 수많은 연결을 효율적으로 처리
  • 메모리 중심 저장소: 모든 데이터를 메모리에 유지해 디스크 I/O 병목을 제거하고, 디스크는 RDB/AOF 백업 용도로만 사용

3. 탄생 배경: 디스크 I/O의 한계

2009년 이전, 디스크 기반 RDBMS만으로는 “1ms 디스크 I/O”가 사소해 보였지만, 대규모 트래픽 환경에서는 치명적이었습니다.
“디스크에 쓰고 읽는 순간마다 1ms씩 걸린다면, 수천 명의 동시 사용자 경험은 금세 무너진다.” Redis는 이 문제를 메모리 중심 설계로 해결했습니다.

4. 풍부한 네이티브 자료구조

Redis는 단순 문자열을 넘어, 다음과 같은 고급 자료구조를 제공합니다:
  • List: 작업 큐, 메시지 대기열
  • Hash: 사용자 프로필·설정 저장
  • Set & Sorted Set: 실시간 랭킹·집계 시스템
  • Bitmap & HyperLogLog: 대규모 고유 사용자 집계
  • GEO: 위치 기반 반경 검색
  • Stream: 이벤트 스트리밍(소비자 그룹·메시지 파이프라인)
사례: 분산 락으로 SMS 인증 중복 요청 차단 → 발송 비용 40% 절감 (상세 사례 보기)

5. 영속성 전략: RDB vs AOF

Redis는 휘발성 메모리 저장소이지만, 두 가지 영속성 옵션을 제공합니다:
  • RDB 스냅샷: 특정 시점 메모리 전체를 디스크에 덤프 → 빠른 복원
  • AOF(Append-Only File): 모든 쓰기 명령을 로그에 기록 → 재시작 시 로그 재생으로 데이터 복구
서비스 특성에 따라 두 방식을 단독 또는 병행해 사용합니다.

6. 메모리 관리와 Eviction Policy

한정된 메모리 환경에서 어떤 키를 제거할지 결정하는 Eviction Policy는 안정성과 성능에 직결됩니다. Redis는 LRU, LFU, TTL 기반 정책을 지원하며, 워크로드에 맞춰 조합해 설정할 수 있습니다.

7. 고가용성(HA) & 샤딩(Clustering)

  • Redis Sentinel: 마스터-슬레이브 복제 및 자동 장애 조치(페일오버)
  • Redis Cluster: 슬롯 기반 샤딩(16,384 슬롯)으로 데이터·트래픽 분산, Enterprise Cluster는 프록시 계층 추가

8. 모듈 생태계 & Streams

  • Modules: RedisJSON, RediSearch, RedisGraph, RedisBloom 등으로 기능 확장
  • Streams: 소비자 그룹·ID 기반 대기열 관리로 이벤트 소싱·메시징 시스템 구축

9. 운영·확장 고려사항

  • API 서버 수와 Redis 인스턴스 계획
    • 대부분 한 대로 충분
    • 용도별 분리(세션 전용 vs 캐시 전용)나 극심한 부하 시 Sentinel/Cluster 도입
  • 동시 연결(maxclients): 서버당 커넥션 풀 크기 조율
  • 메모리: EC2 RAM의 70~80% 수준으로 할당, INFO memory 모니터링
  • CPU: 싱글 스레드 특성상 코어당 클럭 중요
  • 네트워크 I/O: AZ 내 로컬 네트워크 활용 시 지연 최소화

10. Redis 캐싱 전략

10.1 Cache-Aside (Lazy Loading)

10.2 Read-Through

10.3 Write-Through

10.4 Write-Back (Write-Behind)

10.5 Write-Around

10.6 TTL & Eviction Policy