Redis 内存碎片是常见问题,会导致内存使用率下降。以下是处理 Redis 内存碎片的几种有效方法:
首先确认是否存在内存碎片问题:
redis-cli info memory | grep mem_fragmentation_ratio
最简单有效的方法:
# 保存数据(如果使用RDB)
redis-cli save
# 或
redis-cli bgsave
# 然后重启Redis服务
Redis 4.0+ 版本支持主动内存碎片整理:
# 启用自动内存碎片整理
activedefrag yes
# 内存碎片率超过此值时触发整理
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 10
active-defrag-threshold-upper 100
# 整理过程占用CPU资源限制
active-defrag-cycle-min 5
active-defrag-cycle-max 75
redis-cli memory purge
新版本(特别是6.0+)对内存管理有改进,碎片问题较少。
在编译Redis时指定:
make MALLOC=jemalloc
通过以上方法组合使用,可以有效解决Redis内存碎片问题,提高内存利用率。