redis 内存突增原因

邮差的信 提交于 2021-01-02 17:04:23

工作中遇见redis内存突增2G,一段时间之后又突然释放1G,这个时间段内qps正常,没有大数据写入,其他各项正常。

 

问题原因,redis内部维护了一个数组字典,存储key指向的内存位置(类似HashMap的容量)。当redis的元素=数组字典的长度时,就会扩容。扩容过程是,首先申请2倍当前长度的空间,然后渐进式hash把旧字典的数据拷贝到新字典去,拷贝完成释放旧字典空间。

 

字典存储的是指针,每个指针占用8个字节,当key的数量达到134217728时(1.3亿),此时134217728*8字节=1GB,就会导致先申请2GB,再释放1GB。

 

另外需要注意的是,redis的过期时间也是一个单独的字典维护,当有过期时间的key达到1.3亿时,也有突增2GB的现象。

 

参考文章:

https://www.cnblogs.com/ourroad/p/4891648.html   渐进式hash说明

https://www.cnblogs.com/meituantech/p/9376472.html  比较详细的介绍了rehash

 

关键字: redis内存突增  内存突增1GB 内存突增2GB

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!