用 Valkey 替代 Redis:配置、安全与运维
Valkey 是 Redis 的一个社区分支,在功能上几乎完全兼容 Redis 的客户端协议。本服务器用它做本地缓存和会话存储,比原生 Redis 更轻、更新更频繁、治理更透明。对于一台单机自托管服务器,Valkey 是比 Redis 更稳妥的选择。
为什么选 Valkey
- 协议兼容:绝大多数 Redis 客户端库直接可用,迁移成本接近零。
- 轻量:内存占用比 Redis 略低,单用户场景完全够用。
- 治理清晰:Linux 基金会托管,不受单一公司主导,长期维护更稳定。
安全配置
关键原则:Valkey 只监听本地地址,不对外网开放。通过 Docker 容器内部网络被应用访问,宿主机端口不暴露。
bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
tcp-keepalive 300
daemonize yes
pidfile /run/valkey/valkey-server.pid
logfile /var/log/valkey/valkey-server.log
databases 16
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
关键配置项
- bind:只绑 127.0.0.1,拒绝来自外网的连接。配合
protected-mode yes,没有密码的外部访问会被直接拒绝。 - rdbcompression / rdbchecksum:RDB 持久化开启压缩和校验,降低磁盘占用,同时保证数据完整性。
- databases 16:保留 16 个逻辑数据库,不同应用可以用不同编号隔离数据。
- stop-writes-on-bgsave-error:RDB 持久化失败时停止写入,避免数据静默丢失。
systemd 托管
Valkey 由系统原生 valkey-server.service 管理,不需要 Docker。这样它不会被容器编排重启波及,也不占用 compose 管理资源。
# 查看状态
systemctl status valkey-server
# 查看连接与运行时长
valkey-cli info server
# 验证本地可达
valkey-cli ping
# → PONG
在 Docker 应用中访问
容器应用通过宿主机 host.docker.internal:6379 或直接映射访问 Valkey。因为 Valkey 只监听 127.0.0.1,外网无法连接,仅容器内可通。
不要绑定 0.0.0.0:如果
← 返回首页
bind 写成 0.0.0.0,Valkey 会监听所有网卡。没有配置密码的话,外网任意主机都可以连接——这是最常见的键值存储泄露漏洞之一。