Valkey 配置
Valkey 是 Redis 的高性能分支,完全兼容 Redis 协议,为 DNS-Go 提供高性能缓存服务。
关于 Valkey
Valkey 是由 Linux 基金会主导开发的 Redis 分支,特点包括:
- 完全兼容 Redis:支持所有 Redis 命令和协议
- 高性能:针对现代硬件优化
- 活跃开发:社区驱动,持续发展
- 开源友好:宽松的 BSD 许可证
安装 Valkey
Docker 安装(推荐)
bash
# 拉取镜像
docker pull valkey/valkey:8-alpine
# 运行容器
docker run -d \
--name valkey \
--restart unless-stopped \
-p 6379:6379 \
-v /opt/valkey/data:/data \
valkey/valkey:8-alpine
# 验证安装
docker exec -it valkey valkey-cli pingLinux 安装
从源码编译:
bash
# 安装依赖
sudo apt-get update
sudo apt-get install -y build-essential tcl
# 下载源码
git clone https://github.com/valkey-io/valkey.git
cd valkey
# 编译
make BUILD_TLS=yes
# 安装
sudo make install
# 验证
valkey-server --version使用包管理器(即将支持):
bash
# 等待官方包发布
# sudo apt-get install valkeymacOS 安装
bash
# 使用 Homebrew(等待官方支持)
# brew install valkey
# 临时使用 Redis 替代
brew install redis配置 Valkey
基础配置
创建配置文件:
bash
sudo tee /etc/valkey/valkey.conf > /dev/null <<EOF
# 基础配置
bind 127.0.0.1
port 6379
daemonize yes
supervised systemd
pidfile /var/run/valkey/valkey-server.pid
logfile /var/log/valkey/valkey-server.log
dir /var/lib/valkey
# 持久化配置
save 900 1
save 300 10
save 60 10000
# 内存配置
maxmemory 256mb
maxmemory-policy allkeys-lru
# 安全配置
# requirepass your_password
# 性能优化
tcp-keepalive 300
timeout 0
tcp-backlog 511
EOF系统服务配置
创建 systemd 服务文件:
bash
sudo tee /etc/systemd/system/valkey.service > /dev/null <<EOF
[Unit]
Description=Valkey In-Memory Data Store
After=network.target
[Service]
Type=forking
User=valkey
Group=valkey
ExecStart=/usr/local/bin/valkey-server /etc/valkey/valkey.conf
ExecStop=/usr/local/bin/valkey-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
EOF创建用户和目录:
bash
# 创建用户
sudo useradd -r -s /bin/false valkey
# 创建目录
sudo mkdir -p /etc/valkey
sudo mkdir -p /var/lib/valkey
sudo mkdir -p /var/log/valkey
sudo mkdir -p /var/run/valkey
# 设置权限
sudo chown -R valkey:valkey /etc/valkey
sudo chown -R valkey:valkey /var/lib/valkey
sudo chown -R valkey:valkey /var/log/valkey
sudo chown -R valkey:valkey /var/run/valkey启动服务:
bash
sudo systemctl daemon-reload
sudo systemctl start valkey
sudo systemctl enable valkeyDNS-Go 配置
编辑 config/config.toml:
toml
[valkey]
ip = "127.0.0.1" # Valkey 服务器地址
port = 6379 # Valkey 端口
password = "" # 密码(如果设置了)
db = 0 # 数据库编号
pool_size = 10 # 连接池大小
timeout = 5 # 超时时间(秒)使用环境变量
bash
export CACHE_HOST=127.0.0.1
export CACHE_PORT=6379
export CACHE_PASSWORD=性能优化
内存配置
根据服务器内存调整:
conf
# 最大内存限制
maxmemory 512mb
# 内存淘汰策略
maxmemory-policy allkeys-lru淘汰策略说明:
| 策略 | 说明 |
|---|---|
noeviction | 不淘汰,内存满时返回错误 |
allkeys-lru | 淘汰最近最少使用的键(推荐) |
allkeys-random | 随机淘汰键 |
volatile-lru | 只淘汰有过期时间的键(LRU) |
volatile-random | 只淘汰有过期时间的键(随机) |
volatile-ttl | 淘汰即将过期的键 |
持久化配置
conf
# RDB 快照
save 900 1 # 900秒内1次修改
save 300 10 # 300秒内10次修改
save 60 10000 # 60秒内10000次修改
# AOF 持久化
appendonly yes
appendfsync everysecRDB vs AOF:
| 特性 | RDB | AOF |
|---|---|---|
| 文件大小 | 紧凑 | 较大 |
| 恢复速度 | 快 | 慢 |
| 数据安全 | 可能丢失 | 更安全 |
| 性能影响 | 小 | 中等 |
DNS-Go 缓存数据可以容忍丢失,建议使用 RDB 即可。
连接优化
在 DNS-Go 配置中:
toml
[valkey]
pool_size = 20 # 根据并发量调整
timeout = 3 # 减少超时时间监控与维护
查看状态
bash
# 连接到 Valkey
valkey-cli
# 查看信息
INFO
# 查看内存使用
INFO memory
# 查看统计信息
INFO stats
# 查看客户端连接
CLIENT LIST常用命令
bash
# 测试连接
valkey-cli ping
# 查看所有键(谨慎使用)
valkey-cli KEYS "*"
# 查看键数量
valkey-cli DBSIZE
# 清空当前数据库(危险操作!)
valkey-cli FLUSHDB
# 清空所有数据库(危险操作!)
valkey-cli FLUSHALL
# 查看慢查询
valkey-cli SLOWLOG GET 10性能测试
bash
# 基准测试
valkey-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 100000
# 测试特定命令
valkey-benchmark -t set,get -n 100000 -q备份与恢复
备份数据
bash
# 手动触发 RDB 保存
valkey-cli SAVE
# 后台保存(不阻塞)
valkey-cli BGSAVE
# 复制 RDB 文件
cp /var/lib/valkey/dump.rdb /backup/valkey/dump-$(date +%Y%m%d).rdb自动备份脚本:
bash
sudo tee /opt/backup/backup-valkey.sh > /dev/null <<'EOF'
#!/bin/bash
BACKUP_DIR="/opt/backup/valkey"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p ${BACKUP_DIR}
# 触发后台保存
valkey-cli BGSAVE
# 等待保存完成
sleep 5
# 复制备份文件
cp /var/lib/valkey/dump.rdb ${BACKUP_DIR}/dump_${DATE}.rdb
# 压缩
gzip ${BACKUP_DIR}/dump_${DATE}.rdb
# 删除旧备份(保留30天)
find ${BACKUP_DIR} -name "dump_*.rdb.gz" -mtime +30 -delete
echo "[$(date)] Valkey backup completed" >> ${BACKUP_DIR}/backup.log
EOF
chmod +x /opt/backup/backup-valkey.sh恢复数据
bash
# 停止 Valkey
sudo systemctl stop valkey
# 复制备份文件
cp /backup/valkey/dump_20250115.rdb /var/lib/valkey/dump.rdb
# 设置权限
sudo chown valkey:valkey /var/lib/valkey/dump.rdb
# 启动 Valkey
sudo systemctl start valkey故障排查
连接失败
bash
# 检查服务状态
sudo systemctl status valkey
# 检查端口监听
sudo netstat -tlnp | grep 6379
# 查看日志
sudo tail -f /var/log/valkey/valkey-server.log内存不足
bash
# 查看内存使用
valkey-cli INFO memory | grep used_memory
# 查看最大键
valkey-cli --bigkeys
# 调整内存限制
valkey-cli CONFIG SET maxmemory 1gb性能问题
bash
# 查看慢查询
valkey-cli SLOWLOG GET 10
# 查看统计信息
valkey-cli INFO stats
# 监控实时命令
valkey-cli MONITOR使用 Redis 替代
如果暂时无法使用 Valkey,可以使用 Redis 完全替代:
bash
# Docker 运行 Redis
docker run -d \
--name redis \
--restart unless-stopped \
-p 6379:6379 \
redis:7-alpine
# DNS-Go 配置无需修改,完全兼容相关文档
- 环境要求 - 了解部署前的准备工作
- Docker 部署 - 使用 Docker 部署 Valkey
- PostgreSQL 配置 - 配置主数据库