解決redis運行期間key值過期但是內存memory依然占用過高


要解決這個問題,首先要了解redis info信息中幾個數據的意義:

 
used_memory:810575104 //數據占用了多少內存(字節) 
used_memory_human:773.02M //數據占用了多少內存(帶單位的,可讀性好) 
used_memory_rss:885465088  //redis占用了多少內存 
used_memory_rss_human:844.45M //redis占用了多少內存(帶單位的,可讀性好)  
used_memory_peak:2001274696 //占用內存的峰值(字節) 
used_memory_peak_human:1.86G //占用內存的峰值(帶單位的,可讀性好) 
mem_fragmentation_ratio:1.09   //內存碎片率
 
里面需要注意的有:
 
used_memory_human,代表redis數據數據占用內存的大小,

used_memory_rss_human,代表服務器時下為redis分配的內存大小,也就是redis具體占用內存的大小
 
used_memory_peak_human,代表redis在使用期間最高占用了多少內存。
 
mem_fragmentation_ratio = used_memory_rss / used_memory
 
mem_fragmentation_ratio,越低越高,趨向於1,大於1的部分redis碎片占用的大小。范圍在1 - 1.5,大於1.5說明碎片過多,必須要清理了。
 
redis的碎片清理:
 
redis4.0以前內存碎片過多的情況下只能關閉redis重啟后才能生效。
 
redis4.0以后新增了配置項:activedefrag
 
redis的配置項activedefrag默認為no,未開啟,不會自動回收內存清理碎片,
 
當需要清理碎片的時候,使用命令 
 
config set activedefrag yes
 
將activedefrag的配置設置為開啟狀態。則redis會自動清理碎片,回收內存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM