QDAirPortBackend0122/scripts/configure_redis_memory.sh
2026-01-22 13:19:47 +08:00

121 lines
3.0 KiB
Bash

#!/bin/bash
# Redis 内存优化配置脚本
# 用于快速配置 Redis 内存限制和淘汰策略
echo "=========================================="
echo "Redis 内存优化配置脚本"
echo "=========================================="
# 检查 Redis 是否运行
if ! redis-cli ping > /dev/null 2>&1; then
echo "错误: Redis 未运行或无法连接"
echo "请先启动 Redis 服务"
exit 1
fi
echo ""
echo "当前 Redis 配置:"
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
echo ""
echo "当前内存使用情况:"
redis-cli INFO memory | grep -E "used_memory_human|used_memory_peak_human|maxmemory_human"
echo ""
echo "当前数据库大小:"
redis-cli DBSIZE
echo ""
echo "=========================================="
echo "选择环境:"
echo "1) 开发环境 (256MB)"
echo "2) 生产环境 (1GB)"
echo "3) 自定义"
echo "4) 仅查看信息,不修改"
echo "=========================================="
read -p "请选择 [1-4]: " choice
case $choice in
1)
MAX_MEMORY="268435456" # 256MB in bytes
MAX_MEMORY_STR="256mb"
;;
2)
MAX_MEMORY="1073741824" # 1GB in bytes
MAX_MEMORY_STR="1gb"
;;
3)
read -p "请输入最大内存限制 (如: 512mb, 2gb): " MAX_MEMORY_STR
;;
4)
echo "未进行任何修改"
exit 0
;;
*)
echo "无效选择"
exit 1
;;
esac
# 设置淘汰策略
EVICTION_POLICY="volatile-lru"
echo ""
echo "=========================================="
echo "将设置以下配置:"
echo "最大内存: $MAX_MEMORY_STR"
echo "淘汰策略: $EVICTION_POLICY"
echo "=========================================="
read -p "确认执行? [y/N]: " confirm
if [[ $confirm != "y" && $confirm != "Y" ]]; then
echo "已取消"
exit 0
fi
# 执行配置
echo ""
echo "正在配置 Redis..."
if [ -n "$MAX_MEMORY_STR" ]; then
redis-cli CONFIG SET maxmemory "$MAX_MEMORY_STR"
echo "✓ 已设置 maxmemory = $MAX_MEMORY_STR"
fi
redis-cli CONFIG SET maxmemory-policy "$EVICTION_POLICY"
echo "✓ 已设置 maxmemory-policy = $EVICTION_POLICY"
# 可选: 保存到配置文件 (需要权限)
echo ""
read -p "是否保存到 Redis 配置文件? (需要写权限) [y/N]: " save_config
if [[ $save_config == "y" || $save_config == "Y" ]]; then
redis-cli CONFIG REWRITE
if [ $? -eq 0 ]; then
echo "✓ 配置已保存到 redis.conf"
else
echo "✗ 保存失败,请检查权限或手动修改 redis.conf"
fi
fi
echo ""
echo "=========================================="
echo "配置完成!"
echo "=========================================="
echo ""
echo "新配置:"
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
echo ""
echo "建议操作:"
echo "1. 监控内存使用: redis-cli INFO memory"
echo "2. 查看 key 数量: redis-cli DBSIZE"
echo "3. 查看大 key: redis-cli --bigkeys"
echo "4. 查看应用日志以确认系统正常运行"
echo ""
echo "注意: 配置立即生效,无需重启 Redis"