본문 바로가기
Database2026년 4월 12일3분 읽기

Redis 8 실전 활용 — Streams·Vector Search·클러스터 운영 완벽 정리

YS
김영삼
조회 366

핵심 요약

Redis 8은 기존 모듈이던 RediSearch, RedisJSON, RedisTimeSeries, RedisBloom을 코어에 통합했다. 설치·라이선스 고민이 크게 줄었다.

Streams — 경량 메시지 큐

# 메시지 추가
XADD events * type login user 1234

# 컨슈머 그룹 생성
XGROUP CREATE events loggers $ MKSTREAM

# 소비
XREADGROUP GROUP loggers worker1 COUNT 10 BLOCK 2000 STREAMS events >

Kafka가 오버킬인 규모(수십만 msg/s 이하)에 완벽한 대안. ACK와 재시도, DLQ까지 기본 지원.

Vector Search

FT.CREATE idx:docs ON JSON
  PREFIX 1 doc:
  SCHEMA $.embedding AS emb VECTOR HNSW 6 DIM 768 DISTANCE_METRIC COSINE
        $.title AS title TEXT

# 검색
FT.SEARCH idx:docs "*=>[KNN 5 @emb $vec AS score]" PARAMS 2 vec $BYTES SORTBY score

Pinecone·Weaviate 외부 벡터DB 도입 전에 Redis로 먼저 검증할 것. 수백만 벡터까지 단일 노드로 충분한 케이스가 많다.

JSON 도큐먼트

JSON.SET user:1 $ '{"name":"Alice","tags":["ops","db"]}'
JSON.GET user:1 $.name
JSON.ARRAPPEND user:1 $.tags '"k8s"'

클러스터 운영 체크리스트

  • 샤딩 키 설계: hash tag {user:1}으로 동일 슬롯 묶기 (MULTI/EXEC 제약)
  • Replica 수: 최소 1, 운영 권장 2. failover 여유
  • maxmemory-policy: 캐시는 allkeys-lru, 세션은 noeviction + TTL
  • AOF + RDB 혼합: 일관성 vs 복구속도 균형
  • 모니터링: latency, keyspace hits/misses, evicted_keys, mem_fragmentation_ratio

실무에서 자주 만나는 함정

  • KEYS * 명령: 프로덕션 절대 금지. SCAN 사용.
  • 큰 value(>1MB): 단일 명령으로 이벤트 루프 점유. 쪼개서 저장.
  • Hot key: 한 키에 RPS 집중 → 키 샤딩(counter:{user:1}:shard:3)
  • Pipeline vs MULTI: pipeline은 순수 성능, MULTI는 원자성. 목적 구분.

자주 묻는 질문

Redis 7에서 8로 올릴 때 호환성?

클라이언트·persistence 포맷은 호환. 모듈을 썼다면 이제 코어 명령으로 대체 가능.

Valkey와 선택 기준?

Valkey는 Redis 7.2 포크의 OSS 지속 버전. 라이선스 제약이 이슈면 Valkey, 최신 기능(Vector 등)은 Redis 8.

댓글 0

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