redis内存碎片
一、什么是内存碎片
redis数据删除后,所占用内存不会马上换给操作系统,而是交给内存分配管理器,所以对操作系统来说redis仍然占用着这些内存。
这里有个风险点是:redis释放的内存有可能是不联系的,这种不连续的内存很可能无法再次使用,最终造成了内存的浪费。
二、如何判断有内存碎片
可以通过redis提供的命令来查看redis的内存使用情况:
./redis-cli info memory
三、内存碎片是怎么形成的
3.1 内因:jemalloc分配机制导致
3.2 外因:
四、如何清理内存碎片
4.1 重启
重启是最简单的办法,但是重启后如果没有开启rdb或者aof,数据会彻底丢失。如果开启了持久化机制,恢复需要一定的时间,恢复期间redis本身又不可用。所以重启不是第一选择,比较优雅的办法是采用redis自身的碎片清理机制。
4.2 redis内存碎片自动清理机制
4.0版本后redis提供了自动内存碎片清理机制。
作者:iBrake
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.