我最近遇到了SO question,其中op询问redis释放内存的场景。似乎他们被推荐一个艰难的开始是一种潜在的方式,但是在redis的情况下这是未经测试的。谁能让我知道这是否有效?
我有一个实时环境,我不想重新启动redis-server,但它的内存占用现在让人感到虚弱,而且我正处于服务器迁移的边缘。因此,尽可能消除尽可能多的臃肿对我来说很重要(并且有大量的臃肿)。
答案 0 :(得分:3)
我不确定“膨胀”是什么意思,但附加服务器的INFO ALL
输出可能会有所帮助。
默认情况下,Redis使用jemalloc作为内存分配器。在Redis释放后,分配器负责实际释放RAM以供OS回收。 Redis v4及更高版本包括强制分配器清除释放的RAM的能力(MEMORY PURGE
,见https://github.com/antirez/redis-doc/pull/851)。
无论清除如何,还有内存碎片问题。虽然v4具有实验性的活动碎片整理功能,但重启是在先前版本中“修复”的方法。
为了减轻重启和所涉及的停机时间,请使用Redis的复制来创建从属服务器,并在重新启动原始主服务器之前将应用程序故障转移到该服务器。