Valkey란?

Valkey는 Redis 7.2.4에서 포크된 오픈소스 인메모리 데이터스토어다. 2024년 3월 Redis가 라이선스를 BSD에서 듀얼 라이선스(RSALv2 + SSPLv1)로 변경한 것에 대응하여, Linux Foundation 산하에서 BSD 라이선스를 유지하며 개발되고 있다.

Redis와 프로토콜 수준에서 완전 호환되므로, 기존 Redis 클라이언트 라이브러리와 도구를 그대로 사용할 수 있다.


Redis 포크 배경

시점사건
2024-03Redis Labs가 Redis를 RSALv2 + SSPL 듀얼 라이선스로 변경
2024-03Linux Foundation이 Valkey 프로젝트 발표, Redis 7.2.4 기준 포크
2024-09Valkey 8.0 릴리스 — Redis와 독립적인 기능 추가 시작

주요 후원사: AWS, Google Cloud, Oracle, Ericsson, Snap 등


주요 사용 패턴

패턴설명
캐시DB 쿼리 결과, API 응답, 세션 데이터를 인메모리에 캐싱하여 응답 속도 향상
메시지 브로커Celery 등 태스크 큐의 브로커로 사용. 작업 메시지를 Worker에 전달
세션 스토어웹 애플리케이션의 사용자 세션을 중앙 관리
Pub/Sub실시간 메시지 발행/구독. 채팅, 알림 등에 활용
Rate Limiting토큰 버킷, 슬라이딩 윈도우 등 요청 제한 구현
LeaderboardSorted Set을 활용한 실시간 순위표

데이터 구조

타입설명대표 명령
String단순 키-값. 카운터, 캐시에 사용SET, GET, INCR
Hash필드-값 쌍의 집합. 객체 표현에 적합HSET, HGET, HGETALL
List순서가 있는 문자열 목록. 큐, 스택LPUSH, RPOP, LRANGE
Set중복 없는 문자열 집합. 태그, 유니크 방문자SADD, SMEMBERS, SINTER
Sorted Set스코어 기반 정렬 집합. 순위표, 타임라인ZADD, ZRANGE, ZRANK
Stream로그 형태의 append-only 구조. 이벤트 스트리밍XADD, XREAD, XRANGE

영속성(Persistence)

인메모리 데이터를 디스크에 보존하는 두 가지 방식을 제공한다:

방식설명특징
RDB주기적 스냅샷을 바이너리 파일로 저장빠른 복구, 일부 데이터 유실 가능
AOF모든 쓰기 명령을 로그로 기록데이터 유실 최소화, 파일 크기 큼

프로덕션에서는 RDB + AOF를 병행하는 것이 일반적이다.


클러스터링

모드설명
Standalone단일 인스턴스. 개발/소규모 환경
Sentinel자동 장애 감지 및 페일오버. HA 구성
Cluster데이터를 16,384개 해시 슬롯으로 분산. 수평 확장

Redis와의 차이점

Valkey 8.0 이후 Redis와 독립적으로 진화하기 시작했다:

  • 멀티스레드 I/O 개선
  • 듀얼 채널 복제(replication) — 전체 동기화 중에도 변경분 전달 가능
  • RDMA 네트워킹 지원 (실험적)
  • 라이선스: BSD 3-Clause (Redis는 RSALv2 + SSPL)

클라이언트 호환성은 유지되므로 redis-cli, ioredis, jedis 등 기존 도구를 그대로 사용할 수 있다.


관련 문서

  • Celery — Valkey를 메시지 브로커로 사용하는 비동기 태스크 큐