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
注意:本文归作者所有,转载请标明出处 http://blog.appcnd.com/post/article74bb8b9e9f475c03