Debian 上 Redis 内存管理的完整实践
一 配置最大内存与淘汰策略
maxmemory 2gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
上述策略在内存触顶时按 LRU 近似算法淘汰键,采样数 5 可在精度与性能间折中。若业务有明显热点,可考虑 allkeys-lfu(Redis 4.0+)。运行时可动态调整并持久化:# 动态设置
redis-cli CONFIG SET maxmemory 2gb
redis-cli CONFIG SET maxmemory-policy allkeys-lru
# 持久化到配置文件(避免重启丢失)
redis-cli CONFIG REWRITE
常用淘汰策略要点:
二 运行期监控与容量评估
redis-cli INFO memory
# 关注:used_memory、used_memory_rss、maxmemory、maxmemory_policy、mem_fragmentation_ratio
说明:
三 数据结构与存储优化
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
set-max-intset-entries 512
hash-max-listpack-entries 512
hash-max-listpack-value 64
zset-max-listpack-entries 128
zset-max-listpack-value 64
set-max-intset-entries 512
set-max-listpack-entries 128
set-max-listpack-value 64
四 系统层面优化与稳定性
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
# 如需持久化,可加入系统启动脚本
sudo sysctl vm.overcommit_memory=1
echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
适用于内存紧张、存在 Big Key 或频繁过期/淘汰的场景。五 故障排查与扩容路径