Valkey 中文社区

运维总览:安装、配置与持久化

从安装、valkey.conf 关键指令到淘汰策略与 RDB/AOF 持久化的运维基础。

本文覆盖 Valkey 单机运维的基础:如何安装、valkey.conf 里值得关心的指令、内存淘汰策略,以及 RDB / AOF 两套持久化机制。掌握这些之后,再去看 复制与高可用集群安全监控

安装

Valkey 是 Redis 7.2.4 的 BSD-3 分叉,由 Linux Foundation 托管。二进制已重命名为 valkey-servervalkey-clivalkey-sentinel 等;如果你的脚本仍依赖 redis-server / redis-cli 这类名字,需要额外安装兼容包(提供 redis-* 软链接或包装器)。

# 主程序
sudo apt update
sudo apt install -y valkey
# 可选:提供 redis-* 命令名的兼容层
sudo apt install -y valkey-redis-compat
sudo dnf install -y valkey
# 可选兼容层(注意 dnf 上包名与 apt 略有差异)
sudo dnf install -y valkey-compat-redis
docker run -d --name valkey \
  -p 6379:6379 \
  -v valkey-data:/data \
  valkey/valkey:latest \
  valkey-server --appendonly yes

包安装后,服务由 systemd 管理,单元名为 valkey-server.service,默认配置位于 /etc/valkey/valkey.conf,监听端口 6379

sudo systemctl enable --now valkey-server
sudo systemctl status valkey-server
valkey-cli ping   # 期望返回 PONG

注意 INFO 中的 redis_version 字段会显示 7.2.4,这是为了兼容老客户端而保留的。真实版本请看 valkey_versionserver_name 字段。

valkey.conf 关键指令

下面是日常最常调整的几项。生产环境务必先关掉 protected-mode 之外的随意绑定,并设置密码(详见 安全)。

指令说明常见取值
bind监听网卡地址127.0.0.1 -::1(仅本机)或具体内网 IP
protected-mode未设密码且监听非回环时拒绝外部连接yes(默认)
port监听端口;设 0 关闭明文端口6379
dir工作目录,RDB/AOF 落盘位置/var/lib/valkey
logfile日志文件路径/var/log/valkey/valkey.log
requirepass默认用户密码(ACL 的快捷方式)强随机字符串
maxmemory内存上限4gb
maxmemory-policy触顶后的淘汰策略见下表
appendonly是否开启 AOFyes 推荐
saveRDB 触发点见持久化章节

修改后重载:

sudo systemctl reload valkey-server
# 或在线热改(不落盘到配置文件)
valkey-cli CONFIG SET maxmemory 4gb
valkey-cli CONFIG REWRITE   # 将运行时配置写回 valkey.conf

内存淘汰策略

当内存达到 maxmemory 时,由 maxmemory-policy 决定行为。默认是 noeviction,即拒绝写入而非删数据。

策略作用范围选择依据
noeviction不淘汰,写满后写命令返回错误(默认)
allkeys-lru全部键最近最少使用
allkeys-lfu全部键最不经常使用(推荐做纯缓存)
allkeys-random全部键随机
volatile-lru仅带 TTL 的键最近最少使用
volatile-lfu仅带 TTL 的键最不经常使用
volatile-random仅带 TTL 的键随机
volatile-ttl仅带 TTL 的键优先淘汰即将过期的

所有 volatile-* 策略只在存在带 TTL 的键时才生效。如果没有任何可淘汰的过期键,它们会退化为 noeviction,从而拒绝写入。纯缓存场景建议用 allkeys-lfu

LRU/LFU 都是近似算法,通过采样实现。采样数量由 maxmemory-samples 控制,默认 5,调大更精确但更耗 CPU。

持久化:RDB

RDB 是某一时刻的二进制快照,体积小、恢复快,适合做备份和灾备。

# 在 900 秒内有 1 次写、300 秒内 10 次、60 秒内 10000 次时触发快照
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/valkey

手动操作:

valkey-cli BGSAVE     # 后台 fork 子进程生成快照(推荐)
valkey-cli SAVE       # 阻塞主线程直到完成(仅救急时用)
valkey-cli LASTSAVE   # 返回上次成功落盘的时间戳
valkey-check-rdb /var/lib/valkey/dump.rdb   # 校验 RDB 文件完整性

RDB 的代价是两次快照之间的数据可能丢失。要降低丢失窗口,请配合 AOF。

持久化:AOF

AOF 记录每条写命令,可回放重建数据,丢失窗口更小。

appendonly yes
appendfsync everysec   # everysec | always | no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

appendfsync 的取舍:

取值落盘时机取舍
always每条写命令最安全,最慢
everysec每秒一次推荐,最多丢 1 秒
no交给操作系统最快,丢失窗口不可控

Valkey 使用 多文件 AOF(multi-part AOF):数据放在 appendonlydir/ 目录下,由一个清单文件(manifest)加一个 BASE 文件(基线快照)和若干 INCR 文件(增量命令)组成。这种结构让重写更安全、更高效。

valkey-cli BGREWRITEAOF   # 触发后台重写,压缩 AOF
valkey-check-aof --fix /var/lib/valkey/appendonlydir/appendonly.aof.manifest

当 AOF 体积相对上次重写增长超过 auto-aof-rewrite-percentage(默认 100,即翻倍)时会自动重写。

混合持久化

开启后,AOF 重写时会先写一段 RDB 格式的基线,再追加增量命令,兼顾恢复速度与丢失窗口。默认开启:

aof-use-rdb-preamble yes

备份建议

定期 BGSAVE 生成 RDB,并把 dump.rdb 拷贝到异地或对象存储。
备份前用 valkey-check-rdb 校验,避免备份到损坏文件。
多文件 AOF 需整体备份 appendonlydir/ 目录(manifest + BASE + 所有 INCR),不能只拷其中一个文件。
恢复时停服、替换数据文件、确保 dir/dbfilename 与配置一致后再启动。

RDB 与 AOF 同时开启时,重启会优先用 AOF 恢复(数据更完整)。生产建议两者都开:AOF 保证小丢失窗口,RDB 作为快速备份与冷启动手段。

下一步

On this page