2017-09-25 70 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

從來沒有說過真話 –

相關問題