date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Nov 10, 2025 10:03 PM
是否已更新
orginal_page
是否推荐
- 由于 Redis 开源许可证的变更(BSD 3-Clause 到 RSALv2 + SSPLv1)带来后续开源的担忧,从 redis 7.2 起 redis oss fork 出 valkey 项目
debian 安装 valkey
apt install valkey-server
apt install valkey-redis-compat- 可选,二进制符号文件兼容 redis-cli 和其他 redis-* 工具
- 简单说就是没有安装 redis-cli 也能用 valkey-cli 替代
- debian 上没有
alpine 安装 valkey sentinel
apk add valkey
apk add valkey-compat- 可选,二进制符号文件兼容 redis-cli 和 redis-server
rc-update add valkey-sentinel default
rc-update del redis-sentinel default- 移除
redis-sentinel启动
rc-update show -v | grep -E "valkey|redis"
配置 valkey-server 和 valkey-sentinel
- 参考 redis 键值存储的对应部分配置文件,这里不再累述
redis oss 迁移过来的配置项基本兼容
- 目录和文件名的双引号要去掉
- 最好还是和官方文件进行核对一遍
- valkey-sentinel 初始配置时改 port 26379 为 26380
- 避免端口冲突
- master 指向现有 redis-server 主节点 6379 端口
如果有三台额外的节点可以额外 valkey-sentinel 减少服务不可用的时间
- 这三台 valkey-sentinel 没有端口冲突,配置为 26379 即可
- master 指向现为从节点的 redis-server 6379 端口
- 该 redis-server 从节点后续将做为 valkey-server 主节点
- 切换时把从节点直接升级为主节点,不影响写入
- 对应修改 valkey-server 的主从配置
- 其他 valkey-server 需要设置以该 valkey-server 为默认主节点
启动 valkey-server 和 valkey-sentinel 服务
- debian
mkdir -p /etc/valkey /var/log/valkey /var/run/valkey-6379 /var/lib/valkey/6379systemctl disable --now valkey-server valkey-sentinelsystemctl enable --now valkey-server@6380- 测试配置文件是否无误
systemctl status valkey-server@6380systemctl disable --now valkey-server@6380
- alpine
mkdir -p /etc/valkey /var/lib/valkeyservice valkey stopservice valkey-sentinel startservice valkey-sentinel statuscat /var/log/valkey
redis 数据在线迁移工具 RedisShake
- 下载 RedisShake
zinit 包管理临时使用
zi from"gh-r" as"program" for tair-opensource/RedisShake
which redis-shake
zi delete -y tair-opensource/RedisShake- 可选,用完删除
- 以 sentinel 集群为例,实施 RedisShake 数据同步
- 参考资料
- 一般可以直接忽略 sentinel 组件直接写入即可
- 如果不方便获取 addr 则可以通过 sentinel 获取主节点地址
redis-shake ~/.config/redis-shake.toml
vim ~/.config/redis-shake.toml
- 同一节点在线切换导致服务不可用的中断点
- 应用切换 sentinel 端口
- redise-server 主节点关闭
相同机器上的数据迁移
- 同步期间,切换应用实例去使用新的 valkey-sentinel 26380 端口
- 此时的 valkey-sentinel 指向原本的 redis-server 主节点 6379 服务
- 不影响写入
- 切换后可以关掉 redis-sentinel
service redis-sentinel stopsystemctl disable --now redis-server@6379
- alpine valkey-sentinel 逐台修改 sentinel 端口为 26379
vim /etc/valkey/sentinel.confservice valkey-sentinel restart
- 切换应用实例去使用现有的 sentinel 26379 端口
- 更改一到两台 sentinel 的时候就可以切换了
- 等待同步流量较低了,开始淘汰 redis-server 为 valkey-server
systemctl disable --now redis-server@6379- 从两个从节点开始关闭,不影响主节点写入
- 最后关闭主节点的 redis-server 并开启 valkey-server 接受写入
systemctl enable --now valkey-server@6379systemctl status valkey-server@6379
如果有三台额外的节点部署了 valkey-sentinel
- 这三台额外的 valkey-sentinel 由于不存在端口冲突,直接配置 26379 端口
- master 指向现为 redis-server 从节点,将为 valkey-server 主节点的 6379 端口
- 等同步流量较低时,关闭对应从节点的 redis-server, 开启 valkey-server 并升级主节点
- 因为原本是从节点,关闭不影响写入
systemctl disable --now redis-server@6379systemctl enable --now valkey-server@6379
- 此时,切换应用实例去使用额外 valkey-sentinel 集群的 26379 端口
- 这部分指向了 valkey-server 主节点 6379 端口,写入不受影响
- 后续把其他 redis-server 都关闭,开启从节点 valkey-server 即可
- 比原本的中断时间要少
通过 redis-sentinel 检查集群状态
- 假设 alpine 节点地址为 192.168.111~192.168.1.113
REDIS_SENTINEL_NAME=sentineladmin
REDIS_SENTINEL_PASSWORD=adminpasswd
redis-cli \ -u "redis://$REDIS_SENTINEL_NAME:$REDIS_SENTINEL_PASSWORD@192.168.1.111:26379?addr=192.168.1.112:26379&addr=192.168.1.113:26379" \ sentinel master mymaster- 查看从节点数目和 sentinel 实例数目
- num-slaves
- num-other-sentinels
redis-cli \ -u redis://$REDIS_SENTINEL_NAME:$REDIS_SENTINEL_PASSWORD@192.168.1.111:26379?addr=192.168.1.112:26379&addr=192.168.1.113:26379 \ sentinel sentinels mymaster- 查看其他
sentinels情况
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/redis_valkey_migration
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
