本篇内容主要讲解“redis过期键未释放的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis过期键未释放的原因是什么”吧!
背景:
1、redis 版本 5.0;
2、32G 的 redis 云服务器,内存持续上涨,过期键占用内存一直未释放。内存使用如下图:
近期 redis 操作:把 2000 万永不过期键,随机分配 7-20 天的过期时间。
优化过程:
1、对阿里云 “离线全量 key 分析” 持续观察几天;
2、发现过期键的内存一直没有释放,从 2G 涨到 5G;
3、分析过期键内存不释放原因;
4、调整 redis 的 hz 参数,从 10 调 30,发现没有变化;
5、分析 redis 源码。
6、结论:redis 内存不释放原因:近期把 2000 万个键设置过期时间,导致垃圾回收命中率达不到 25%,不会重复轮循过期键。(源码文件:expire.c,activeExpireCycle 函数)。
hz 说明
7、最终处理方式:无需任何操作,随着过期键增多命中率提高,内存最终会释放(想加快把 “hz” 参数设置越大越快,但是会消耗更多 CPU 资源,可参数阿里云文档)。
到此,相信大家对“redis过期键未释放的原因是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!