CentOS 上 Redis 内存管理的完整实践
一 核心配置步骤
maxmemory 1gb
maxmemory-policy allkeys-lru
保存后重启服务:sudo systemctl restart redis
使用 redis-cli 验证:redis-cli ping # 返回 PONG 表示运行正常
redis-cli info memory # 查看内存指标
提示:若 maxmemory 为 0(默认),Redis 将尝试使用所有可用内存,生产环境建议显式设置上限。二 系统层面的关键设置
sudo sysctl vm.overcommit_memory=1
echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
以上系统调优项与 Redis 内存上限配合使用,可显著提升稳定性。三 淘汰策略选择与配置
| 策略 | 含义 | 适用场景 |
|---|---|---|
| noeviction | 达到上限不淘汰,写操作返回错误 | 数据不可丢失、可接受写入失败 |
| allkeys-lru | 对所有键使用近似 LRU 淘汰 | 通用缓存、存在热点数据 |
| allkeys-lfu | 对所有键使用近似 LFU 淘汰 | 访问频率差异明显的场景 |
| volatile-lru | 仅对已设置 TTL 的键 LRU 淘汰 | 缓存与持久化混合,且键大多有 TTL |
| volatile-ttl | 优先淘汰 TTL 更近的键 | 会话、验证码等时效性数据 |
| volatile-random / allkeys-random | 随机淘汰 | 访问分布均匀、成本敏感 |
# 配置文件
maxmemory 4gb
maxmemory-policy allkeys-lfu
# 动态生效(无需重启)
redis-cli config set maxmemory 4gb
redis-cli config set maxmemory-policy allkeys-lfu
四 监控与碎片治理
redis-cli ping
redis-cli info memory
结合 Prometheus + Grafana 等监控设置告警,当 used_memory ≈ maxmemory 或 碎片率异常 时及时处置。五 持久化与容量规划建议