아래는 개발자 기준으로 Redis를 깊이 있게 설명한 내용입니다.
(개념 → 구조 → 자료구조 → 기능 → 실무 → 설계 → Kafka/RabbitMQ 비교)


1) Redis란?

**Redis(Remote Dictionary Server)**는
👉 초고속 인메모리 데이터 저장소(In-Memory Data Store) 입니다.

한 줄 정의:

Redis는 메모리에 데이터를 저장하는 NoSQL + Cache + Message Broker 역할을 하는 시스템.


2) Redis의 핵심 특징

✅ 1) 메모리 기반 (In-Memory)

  • RAM에 데이터 저장 → 매우 빠름
  • 평균 응답 속도: 0.1~1ms

👉 DB vs Redis

항목DBRedis

저장 위치 디스크 메모리
속도 느림 매우 빠름
영속성 기본 선택

✅ 2) Key-Value 구조

key → value

예:

"user:1" → { name: "kim", age: 20 }

✅ 3) 다양한 데이터 구조 지원 (Redis의 핵심)

Redis는 단순 KV가 아니라 “자료구조 서버”임.

🔹 String

SET name "kim"
GET name

🔹 List (큐/스택)

LPUSH queue "task1"
RPOP queue

🔹 Set (중복 제거)

SADD users "kim"

🔹 Sorted Set (랭킹)

ZADD score 100 "user1"

🔹 Hash (객체)

HSET user:1 name "kim" age 20

🔹 Bitmap / HyperLogLog / Geo / Stream

👉 고급 기능 (실무에서 많이 사용)


3) Redis 주요 사용 사례 (실무)

✅ 1) 캐시 (Cache) ⭐⭐⭐⭐⭐

가장 많이 쓰임

API → Redis → DB

예:

  • DB 조회 결과 캐싱
  • API 응답 캐싱
  • 세션 캐시

👉 DB 부하 감소


✅ 2) 세션 저장소 (Session Store)

로그인 세션 → Redis

왜?

  • 빠름
  • 분산 환경에 적합

✅ 3) 메시지 큐 / Pub-Sub

Pub/Sub

Publisher → Redis → Subscriber

특징:

  • 메시지 저장 ❌
  • 실시간 브로드캐스트

Redis Stream

Kafka 유사 기능

Producer → Stream → Consumer Group

👉 하지만 Kafka보다 기능 제한


✅ 4) 분산 락 (Distributed Lock)

예:

  • 결제 중복 방지
  • 재고 동시성 제어
SET lock:order:1 value NX PX 3000

✅ 5) Rate Limiting (API 호출 제한)

예:

  • 로그인 시도 제한
  • DDOS 방어

✅ 6) 실시간 랭킹 시스템

Sorted Set 활용

예:

  • 게임 랭킹
  • 인기 게시글

4) Redis vs DB (개발자 핵심)

❗ Redis를 DB로 쓰면 안 되는 이유

  • 메모리 기반 → 데이터 유실 가능
  • 트랜잭션 제한
  • 복잡한 쿼리 불가

👉 결론:

Redis는 DB가 아니라 “DB 보조 시스템”


5) Redis 영속성 (Persistence)

Redis는 메모리 DB지만 저장 기능 있음.

✅ RDB (Snapshot)

  • 일정 시간마다 저장
  • 빠름, 데이터 일부 손실 가능

✅ AOF (Append Only File)

  • 모든 명령 기록
  • 데이터 안정성 ↑
  • 성능 ↓

👉 실무 설정:

RDB + AOF 같이 사용

6) Redis 아키텍처

✅ Single Node

  • 개발 환경

✅ Replication (복제)

Master → Replica
  • 읽기 분산
  • 장애 대비

✅ Sentinel (HA)

  • 장애 감지
  • 자동 Failover

✅ Cluster (샤딩)

데이터 분산 저장

👉 대규모 서비스 필수


7) Redis 성능이 빠른 이유

  1. 메모리 기반
  2. 싱글 스레드 이벤트 루프
  3. 락 최소화
  4. 단순한 자료구조

👉 Q: 왜 싱글 스레드인데 빠름?

  • CPU보다 IO가 병목이기 때문

8) Redis vs Kafka vs RabbitMQ (Redis 기준)

항목RedisKafkaRabbitMQ

목적 캐시/실시간 처리 이벤트 스트리밍 메시지 큐
데이터 저장 제한적 강력 보통
처리량 매우 높음 매우 높음 중간
메시지 보존 기본 ❌
확장성 보통 매우 높음 보통

👉 Redis는 메시징보다 “속도 중심”


9) 실무 설계 예시 (진짜 중요 ⭐)

✅ 아키텍처 예

Client
  ↓
API Server
  ↓
Redis (Cache)
  ↓
DB

✅ MSA 환경

Kafka → 이벤트 전달
Redis → 캐시 / 락 / 세션
RabbitMQ → 작업 큐

👉 대기업 표준 구조


10) Redis 설계 시 반드시 알아야 할 함정

❗ 1) TTL 없는 캐시 = 메모리 폭발

❗ 2) Redis를 DB처럼 사용

❗ 3) Big Key 문제

  • 너무 큰 value → 성능 저하

❗ 4) Hot Key 문제

  • 특정 key 집중 조회

❗ 5) Cluster 설계 실패

  • hash tag 미사용

11) 개발자용 한 줄 정리

Redis는

“DB를 빠르게 만들기 위한 메모리 엔진”

또는

“MSA에서 성능을 책임지는 핵심 인프라”


12) 원하면 더 깊게 설명해줌

원하면:

  • Redis vs Memcached
  • Redis Cluster 구조
  • Redis 락 구현 원리
  • Redis Stream vs Kafka
  • Redis 실무 설계 패턴
  • Redis 성능 튜닝 방법
  • .NET / Node.js / Python 예제

👉 원하면
“Redis를 MSA 기준으로 설명”
이거 해주면 진짜 이해됨.

728x90

+ Recent posts