我最近遇到了一個SO question,其中op問在哪些情況下redis釋放了內存。看起來他們被推薦是一個可行的方法,然而這在redis的情況下是未經測試的。任何人都可以讓我知道這是否有效?是否需要釋放內存才能重新啓動redis?
我有一個現場環境,我不想重新啓動redis服務器,但其內存足跡現在正在衰弱,我正處於服務器遷移的邊緣。所以對我來說盡可能地消除膨脹是很重要的(而且還有很多膨脹)。
我最近遇到了一個SO question,其中op問在哪些情況下redis釋放了內存。看起來他們被推薦是一個可行的方法,然而這在redis的情況下是未經測試的。任何人都可以讓我知道這是否有效?是否需要釋放內存才能重新啓動redis?
我有一個現場環境,我不想重新啓動redis服務器,但其內存足跡現在正在衰弱,我正處於服務器遷移的邊緣。所以對我來說盡可能地消除膨脹是很重要的(而且還有很多膨脹)。
我不確定「bloat」是什麼意思,但附加服務器的INFO ALL
輸出可能會有幫助。
默認情況下,Redis使用jemalloc作爲內存分配器。在Redis釋放它之後,分配器負責爲操作系統釋放內存。 Redis v4及更高版本包括強制分配器清除釋放的RAM(MEMORY PURGE
,請參閱https://github.com/antirez/redis-doc/pull/851)的功能。
無論清除,還有內存碎片的問題。雖然v4具有實驗性的活動碎片整理功能,但重啓是「修復」之前版本的方法。
要減輕重啓和涉及的停機時間,請在重新啓動原始主服務器之前使用Redis的複製創建從服務器並將應用程序故障轉移到該服務器。
沒有什麼太神祕的,'膨脹'我的意思是我有一堆鑰匙不再使用。 –
啊 - 要麼更加嚴格。管家和/或使用TTL :) –
從來沒有說過真話 –