Valkey vs Redis – 간단하고 실용적인 설명
Source: Dev.to

🔑 Valkey란 무엇인가요?
Valkey는 Redis의 오픈‑소스 포크이며, 2024년에 만들어졌고, Linux Foundation이 완전히 호환하고 지원합니다. 이는 **Redis 라이선스 변경(≥ 7.4)**에 대한 대응으로, OSI 표준에 따라 오픈 소스가 아니게 된 상황에 대한 답입니다.
👉 Valkey의 목표
- Redis를 100 % 오픈 소스로 유지
- Redis와 완전 호환 (명령, 프로토콜, 클라이언트)
- 커뮤니티 중심의 중립적인 거버넌스
- 벤더 락인 없음
실제로: Valkey는 Redis와 동일하지만, 오픈 라이선스와 커뮤니티 개발을 갖추고 있습니다.
🧠 Valkey는 무엇에 사용되나요?
- 메모리 캐시
- 세션 저장소
- Pub/Sub
- 속도 제한
- 분산 락
- 스트림
- 리더보드
- 복제
- 영속성 (RDB / AOF)
- Redis 클러스터
⚖️ Valkey vs Redis (빠른 비교)
| 특징 | Valkey | Redis (≥ 7.4) |
|---|---|---|
| 라이선스 | ✅ Open Source (BSD/Apache‑style) | ❌ RSAL / SSPL |
| 거버넌스 | Linux Foundation | Redis Inc |
| 호환성 | 100 % Redis | 네이티브 |
| 상업적 사용 | ✅ 무료 | ⚠️ 제한 |
| 벤더 종속성 | ❌ 낮음 | ⚠️ 높음 |
| 클라우드 친화적 | ✅ 예 | ⚠️ 제한적 |
| K8s 지원 | ✅ Excellent | ✅ |
🧾 라이선스: 핵심 포인트
오늘날 Redis
- RSAL / SSPL 라이선스
- OSI에서 오픈 소스로 인정되지 않음
- SaaS 및 클라우드 제공업체에 대한 제한
Valkey
- 진정한 오픈 소스
- 상업적 사용에 제한 없음
- 기업, 교육 및 정부에 이상적
그래서 AWS, Google, Oracle 및 기타 제공업체가 Valkey를 지원합니다.
🧪 Demo 1 – Valkey 로컬 Docker 사용
docker run -d --name valkey -p 6379:6379 valkey/valkey:latest

빠른 테스트
redis-cli ping
# PONG
redis-cli set demo "hola valkey"
redis-cli get demo
# "hola valkey"

🧪 Demo 2 – Pub/Sub
Terminal A
redis-cli subscribe events

Terminal B
redis-cli publish events "mensaje desde valkey"

Resultado en Terminal A

☸️ Demo 3 – Kubernetes에서 Valkey
valkey.yaml 파일을 생성합니다:
apiVersion: v1
kind: Namespace
metadata:
name: demo
---
apiVersion: v1
kind: Service
metadata:
name: valkey
namespace: demo
labels:
app: valkey
spec:
# Headless Service required by StatefulSet
clusterIP: None
selector:
app: valkey
ports:
- name: redis
port: 6379
targetPort: 6379
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: valkey
namespace: demo
spec:
serviceName: valkey
replicas: 1
selector:
matchLabels:
app: valkey
template:
metadata:
labels:
app: valkey
spec:
containers:
- name: valkey
image: valkey/valkey:latest
ports:
- name: redis
containerPort: 6379
volumeMounts:
- name: data
mountPath: /data
readinessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 5
volumes:
- name: data
emptyDir: {}
매니페스트를 적용합니다:
kubectl apply -f valkey.yaml
문서 끝.
periodSeconds: 5
livenessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 15
periodSeconds: 10
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
배포
kubectl apply -f valkey.yaml
포드에서 접근하기
kubectl run -it --rm vcli -n demo --image=redis:7 -- bash
연결을 확인하기 위해 ping을 실행합니다:
redis-cli -h valkey.demo.svc.cluster.local ping
PONG
Código fuente: k8s-valkey-demo
🔄 Redis에서 온 경우 코드를 변경해야 하나요?
아니오.
- 동일한 명령어
- 동일한 RESP 프로토콜
- 동일한 클라이언트 (
redis-cli,node-redis,ioredis등)
이미지만 변경하면 됩니다:
image: valkey/valkey
🚀 결론
다음과 같은 것을 구축하고 있다면:
- Kubernetes
- SaaS
- 클라우드 플랫폼
- 오픈 소스 프로젝트
Valkey가 오늘 권장되는 선택입니다.
