信步拾遗之替代 Redis 的开源组件 Valkey
目录
背景说明
Valkey 是一款从 Redis 7.2.4 分支而来的开源内存数据库,旨在继续提供自由、开放的数据存储方案。其诞生直接源于 Redis 在许可证策略上的重大转变:
- 代码渊源:Valkey 最初完整复刻了 Redis 7.2.4 的代码库,因此两者在功能与接口上高度兼容,现有 Redis 客户端和应用几乎无需修改即可迁移。
- 许可证差异:
- Redis 自 7.4 版本起,不再使用宽松的 BSD 协议,转而采用 RSALv2 与 SSPLv1 双重许可证。前者明确限制将 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证书重载功能,简化了证书管理,提升了加密传输的安全性。

浙公网安备 33010602011771号