記一次 Redis 容量 超限的問題

CrazyZard發表於2020-04-01
  • 這臺伺服器的使用量其實並不大,當初設定256M的容量其實夠用的
  • 現在擴容到 2G , 現在就用到了1.71G
  • 預設的配置 hz 10 maxmemory-policy volatile-lru
  • 由於本機沒有視覺化 redis 工具,只能上伺服器檢視資訊
  • 只能一個個分割槽去檢視,查到 1 分割槽的時候 檢視有大量的相同的字首的key 是 string 型別的

記一次 redis 容量 超限的問題

  • 檢視了其中一個 key 的過期時間,算是1天的過期時間
    記一次 redis 容量 超限的問題
  • 詢問其他同事,這個快取作用,商量結果是 批量刪除

查詢了資料,幾乎是先模糊查詢 所有對應的key 然後在刪除,我選出其中一種方法

[root@lsk root]# redis-cli  -h redis.serv -a 'sercet' -n 1 --scan --pattern "manage.session.*" | xargs -L 1000 redis-cli -h redis.serv -a  'sercet' -n 1  del
  1. -h 是我定義的redis地址
  2. -n 是分割槽1
  3. -L 是一次性刪除的數 第一次我500刪 但是嫌太慢了 改成1000

返回的資訊
記一次 redis 容量 超限的問題

由於 redis 刪除 key 之後不會馬上會釋放記憶體,所以不會看到記憶體使用量馬上下去
如果已經影響到系統記憶體使用了,也有下面三種方案:

  1. 可以通過 MEMORY PURGE命令進行記憶體整理。(瞬時,能稍微騰出rss記憶體空間)
  2. 開啟activedefrag,熱碎片整理。(會佔用CPU,在主執行緒執行,可以設定CPU佔用率)
  3. 重啟。

記一次 redis 容量 超限的問題

本作品採用《CC 協議》,轉載必須註明作者和本文連結

快樂就是解決一個又一個的問題!

相關文章