2017-09-25 71 views
0

我最近遇到了一个SO question,其中op问在哪些情况下redis释放了内存。看起来他们被推荐是一个可行的方法,然而这在redis的情况下是未经测试的。任何人都可以让我知道这是否有效?是否需要释放内存才能重新启动redis?

我有一个现场环境,我不想重新启动redis服务器,但其内存足迹现在正在衰弱,我正处于服务器迁移的边缘。所以对我来说尽可能地消除膨胀是很重要的(而且还有很多膨胀)。

回答

1

我不确定“bloat”是什么意思,但附加服务器的INFO ALL输出可能会有帮助。

默认情况下,Redis使用jemalloc作为内存分配器。在Redis释放它之后,分配器负责为操作系统释放内存。 Redis v4及更高版本包括强制分配器清除释放的RAM(MEMORY PURGE,请参阅https://github.com/antirez/redis-doc/pull/851)的功能。

无论清除,还有内存碎片的问题。虽然v4具有实验性的活动碎片整理功能,但重启是“修复”之前版本的方法。

要减轻重启和涉及的停机时间,请在重新启动原始主服务器之前使用Redis的复制创建从服务器并将应用程序故障转移到该服务器。

+0

没有什么太神秘的,'膨胀'我的意思是我有一堆钥匙不再使用。 –

+1

啊 - 要么更加严格。管家和/或使用TTL :) –

+0

从来没有说过真话 –

相关问题