Redis提供了5種數據淘汰策略:
-
volatile-lru:使用LRU算法進行數據淘汰(淘汰上次使用時間最早的,且使用次數最少的key),只淘汰設定了有效期的key
-
allkeys-lru:使用LRU算法進行數據淘汰,所有的key都可以被淘汰
-
volatile-random:隨機淘汰數據,只淘汰設定了有效期的key
-
allkeys-random:隨機淘汰數據,所有的key都可以被淘汰
-
volatile-ttl:淘汰剩余有效期最短的key
最好為Redis指定一種有效的數據淘汰策略以配合maxmemory設置,避免在內存使用滿后發生寫入失敗的情況。
一般來說,推薦使用的策略是volatile-lru,並辨識Redis中保存的數據的重要性。對於那些重要的,絕對不能丟棄的數據(如配置類數據等),應不設置有效期,這樣Redis就永遠不會淘汰這些數據。對於那些相對不是那么重要的,並且能夠熱加載的數據(比如緩存最近登錄的用戶信息,當在Redis中找不到時,程序會去DB中讀取),可以設置上有效期,這樣在內存不夠時Redis就會淘汰這部分數據。
配置方法:
1.在線更新配置 /apps/svr/redis-3.2.0/bin/redis-cli -p 6921 config set maxmemory-policy volatile-lru
2.修改配置文件 maxmemory-policy volatile-lru #默認是noeviction,即不進行數據淘汰
我們使用的:
# /apps/svr/redis/bin/redis-cli -p 6921 config get maxmemory-policy
1) "maxmemory-policy"
2) "noeviction"
不進行淘汰: noevition: 不會剔除任何數據,拒絕所有寫入操作並返回客戶端錯誤信息,此時,Redis只響應讀操作
掃描大key:
/apps/svr/redis-3.2.0/bin/redis-cli -h 10.10.10.10 -p 6956 --bigkeys -i 0.1