핵심 요약
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