2026-10-27 23:16:12
Redis内存碎片主要由自实现内存分配器机制和value更新导致,可通过配置自动清理或手动命令清理,需根据碎片率指标判断处理方式。
内存碎片的产生原因
通过info memory命令可获取关键指标,其中mem_fragmentation_ratio(内存碎片率)计算公式为:mem_fragmentation_ratio = used_memory_rss / used_memory
Redis 4.0以下版本仅支持通过重启服务强制释放所有内存,操作简单但会导致服务中断,适用于非生产环境或可接受停机的场景。
Redis 4.0及以上版本支持自动内存碎片清理,通过配置参数控制:
127.0.0.1:6379[6]> config set activedefrag yes # 启用自动清理关键配置参数:
active-defrag-ignore-bytes 100mb:当碎片内存超过100MB时启动清理。
active-defrag-threshold-lower 10:当碎片率超过10%时启动清理。
active-defrag-threshold-upper 100:当碎片率低于100%时持续清理(默认上限为100%)。
手动清理命令执行memory purge命令可立即触发内存碎片整理,适用于需要即时优化的场景:
127.0.0.1:6379> memory purge # 手动清理内存碎片