Valkey vs Redis – 简单实用的解释

发布: (2026年1月9日 GMT+8 05:59)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Valkey 与 Redis 的封面图 – 简单实用的解释

Afu Tse (Chainiz)


🔑 什么是 Valkey?

ValkeyRedis 的开源分支,创建于 2024 年,完全兼容并得到 Linux 基金会 的支持。它是对 Redis 许可证变更(≥ 7.4) 的响应,该变更使其不再符合 OSI 标准的开源。

👉 Valkey 的目标

  • 保持 Redis 100 % 开源
  • 与 Redis 完全兼容(命令、协议、客户端)
  • 社区治理且中立
  • 无供应商锁定

在实践中: Valkey 是 Redis,只是采用了开放许可证并由社区开发。

🧠 Valkey 用途是什么?

完全与 Redis 相同的使用场景:

  • 内存缓存
  • 会话存储
  • 发布/订阅
  • 速率限制
  • 分布式锁
  • 排行榜
  • 复制
  • 持久化(RDB / AOF)
  • Redis 集群

⚖️ Valkey vs Redis (快速比较)

特性ValkeyRedis (≥ 7.4)
许可证✅ 开源(BSD/Apache 风格)❌ RSAL / SSPL
治理Linux FoundationRedis Inc
兼容性100 % Redis原生
商业使用✅ 免费⚠️ 限制
供应商锁定❌ 低⚠️ 高
云友好✅ 是⚠️ 受限
K8s 支持✅ 优秀

🧾 许可证:关键点

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

docker run

快速测试

redis-cli ping
# PONG

redis-cli set demo "hola valkey"
redis-cli get demo
# "hola valkey"

redis-cli output

🧪 演示 2 – Pub/Sub

终端 A

redis-cli subscribe events

redis-cli subscribe

终端 B

redis-cli publish events "mensaje desde valkey"

redis-cli publish

终端 A 的结果

redis-cli subscribe result

☸️ Demo 3 – Valkey 在 Kubernetes 中

创建文件 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

从 pod 访问

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,是否需要更改代码?

No.

  • 相同的命令
  • 相同的 RESP 协议
  • 相同的客户端(redis-clinode-redisioredis 等)

只需更换镜像:

image: valkey/valkey

🚀 结论

如果您正在构建:

  • Kubernetes
  • SaaS
  • 云平台
  • 开源项目

Valkey 是今天推荐的选项。

Back to Blog

相关文章

阅读更多 »

你好,我是新人。

嗨!我又回到 STEM 的领域了。我也喜欢学习能源系统、科学、技术、工程和数学。其中一个项目是…