信步拾遗之替代 Redis 的开源组件 Valkey


背景说明

Valkey 是一款从 Redis 7.2.4 分支而来的开源内存数据库,旨在继续提供自由、开放的数据存储方案。其诞生直接源于 Redis 在许可证策略上的重大转变:

  • 代码渊源:Valkey 最初完整复刻了 Redis 7.2.4 的代码库,因此两者在功能与接口上高度兼容,现有 Redis 客户端和应用几乎无需修改即可迁移。
  • 许可证差异
    • Redis 自 7.4 版本起,不再使用宽松的 BSD 协议,转而采用 RSALv2SSPLv1 双重许可证。前者明确限制将 Redis 作为商业服务对外提供,后者具有开源“传染性”
    • Valkey 始终遵循 BSD 开源协议,保持完全自由的使用、修改和分发权利,不受商业用途限制。

1. 安装部署

方法一:通过 Docker 部署(推荐用于快速体验)

使用 Bitnami 提供的官方镜像,通过 docker-compose.yml 即可一键启动:

services:
  valkey:
    image: docker.io/bitnami/valkey:latest
    container_name: valkey-server
    ports:
      - "6379:6379"
    environment:
      - VALKEY_PASSWORD=admin
      - VALKEY_AOF_ENABLED=false      # 禁用 AOF
      # Bitnami 镜像默认不启用 RDB,因此无需额外配置
      # 如果需要,可以设置 VALKEY_SAVE="" 来明确禁用
    # 注释掉 volumes,数据不持久化
    # volumes:
    #   - valkey-data:/bitnami/valkey/data
    restart: unless-stopped

注意:上述配置关闭了持久化,适合测试或缓存场景。若需持久保存数据,请启用 AOF 或 RDB,并挂载数据卷。

方法二:源码编译安装(适合定制化或生产部署)

从 GitHub 克隆源码并编译:

git clone https://github.com/valkey-io/valkey.git
cd valkey
make
sudo make install

make 命令默认进行基础编译。你也可以使用高级选项:

  • make BUILD_TLS=yes:启用 TLS/SSL 加密。
  • make USE_SYSTEMD=yes:集成 systemd 支持。
    编译安装后,启动服务的方式如下:
  • 直接运行: valkey-server
  • 使用自定义配置: valkey-server /path/to/your/valkey.conf
    若需要后台守护进程运行,可在配置文件中设置 daemonize yes

2. 验证

以 Docker 部署为例,进入容器并使用 valkey-cli 工具进行连接测试:

# 进入容器(容器名与 docker-compose 中一致)
docker exec -it valkey-server bash

# 使用密码连接本地 Valkey
valkey-cli -a admin

# 查看所有键
keys *

3. 从Redis迁移

官方提供了详尽的迁移指南

  • 高度兼容:Valkey 与 Redis OSS 7.2及所有更早版本保持完全兼容。这意味着,从这些版本迁移,在协议、配置文件、RDB/AOF文件格式上基本无缝。
  • 重要限制Redis 7.4及之后版本(采用新许可证的版本)产生的数据文件与Valkey不兼容。如果你的数据源于这些新版本,需要采用其他迁移方法。
  • 迁移方式:官方文档提供了多种迁移路径,包括物理迁移(直接拷贝RDB文件)、主从复制(将Valkey设置为Redis的从库)以及迁移特定键等灵活方式。

4. 高可用与集群部署

与 Redis 相同的,Valkey 也支持哨兵和集群两种集群部署方案。

  • Valkey Sentinel(哨兵模式):这是实现高可用的标准方案。Sentinel是一个分布式系统,会持续监控主从节点,并在主节点故障时自动进行故障转移,将某个从节点提升为新的主节点。官方文档建议生产环境至少部署三个Sentinel实例,以防止“脑裂”。
  • Valkey Cluster(集群模式):这是实现数据水平分片和扩展的官方方案。数据会自动分布在多个节点上,无需依赖其他第三方组件。官方同样提供了valkey-cluster等相关工具和文档。

5. 持久化策略

示例中关闭了持久化,但实际使用时,可以根据需求进行配置。

  • RDB(快照):在指定时间间隔内,将数据集的内存快照写入磁盘。适合做数据备份,或在重启时快速恢复。
  • AOF(追加日志):记录服务器执行的所有写操作命令,在服务器启动时重放这些命令来恢复数据。提供了更高的数据安全性。
  • 混合模式:两者可以同时启用,并非互斥。你还可以在运行时通过CONFIG SET命令动态切换持久化方式。

6. 安全与权限管理

  • 精细权限控制Valkey 9.1版本引入了数据库级别的访问控制列表(ACL)系统,支持在多租户环境下进行更细粒度的权限隔离。
  • TLS增强Valkey 9.1版本还实现了自动化TLS证书重载功能,简化了证书管理,提升了加密传输的安全性。
posted @ 2026-07-14 19:14  临渊启明  阅读(25)  评论(0)    收藏  举报