2023年11月29日发(作者:)

什么是Redis内存碎⽚率?碎⽚如何清理?

Redis服务器内存不够⽤了,这时可以看看是否是内存碎⽚的原因,不⼀定只能靠内存扩容来处理。

⼀、碎⽚率的计算

我们登陆到Redis服务器上,执⾏以下命令:

其中mem_fragmentation_ratio就是内存碎⽚率。

mem_fragmentation_ratio = used_memory_rss / used_memory

used_memory_rss:是Redis向操作系统申请的内存。

used_memory:是Redis中的数据占⽤的内存。

⼆、内存碎⽚如何产⽣的?

Redis内部有⾃⼰的内存管理器,为了提⾼内存使⽤的效率,来对内存的申请和释放进⾏管理。

Redis中的值删除的时候,并没有把内存直接释放,交还给操作系统,⽽是交给了Redis内部有内存管理器。

Redis中申请内存的时候,也是先看⾃⼰的内存管理器中是否有⾜够的内存可⽤。

Redis的这种机制,提⾼了内存的使⽤率,但是会使Redis中有部分⾃⼰没在⽤,却不释放的内存,导致了内存碎⽚的发⽣。

三、碎⽚率的意义:

mem_fragmentation_ratio的不同值,说明不同的情况。