Redis碎片

Aveiro 2018年06月18日 ⋅ 830 阅读
127.0.0.1:6379> info memory
# Memory
used_memory:4230272 // redis数据实际占用的内存(包括虚拟内存)(字节)
used_memory_rss:7843840 // redis向操作系统申请的内存(不包括虚拟内存)(字节)
mem_fragmentation_ratio:1.89// 内存碎片率

mem_fragmentation_ratio表示内存碎片率,=used_memory_rss/used_memory

mem_fragmentation_ratio正常值应该在1~1.5之间

当mem_fragmentation_ratio<1时:表明内存不够了,正在使用交换内存,也就是使用硬盘了

当mem_fragmentation_ratio>1.5时:说明内存碎片率大,需要考虑进行碎片清理

 

内存碎片如何产生?

内存碎片是在redis分配、回收物理内存时产生的。例如对数据的修改频繁、且修改前后的大小相差大,可能导致redis释放的空间在物理内存中没有被释放。但redis又不能有效利用,就形成率内存碎片,内存碎片会统计到used_memory_rss中,但不会统计到used_memory中,此外内存碎片的产生还与redis内存分配器设计有关。

 

内存碎片清理

低于4.0版本:直接重启redis

4.0及其以后版本:可以直接线上整理,无需重启

设置自动清理内存

config set activedefrag yes

如果想把配置写到配置文件中去

config rewrite

或者手动清理碎片

memory purge

 


全部评论: 0

    我有话说: