Redis運維和開發學習筆記(7) 內存管理和過期策略
文章目錄
- Redis運維和開發學習筆記(7) 內存管理和過期策略
- 內存回收策略
- 惰性刪除
- 定時任務刪除
- maxmemory
- 過期策略allkeys-lru主從搭建測試
- 搭建完畢主從
- 測試結果
- volatile-lru測試結果
- volatile-ttl測試結果
- allkeys-lru
內存回收策略
惰性刪除
惰性刪除用于當客戶端讀取帶有超時屬性的鍵時,如果已經超過鍵設置的過期時間,會執行刪除操作并返回空。不需要維護TTL鏈處理過期鍵的刪除。如果有一個鍵從來沒有被訪問,那就有問題了。就需要定時任務刪除
定時任務刪除
默認每10秒執行一次,通過配置hz控制。定時任務中采用自適應算法。根據鍵的過期比例,使用快慢兩種速率回收
maxmemory
內存達到maxmemory限制時觸發內存溢出控制策略maxmemory-policy:六種策略
noeviction | 默認不刪除,拒絕所有寫操作 |
---|---|
volatile-lru | 根據LRU算法刪除設置了超時屬性 |
allkeys-lru | 根據lru算法刪除鍵,不管數據有沒有設置超時屬性 |
volatile-random | 隨機刪除過期鍵,知道騰出足夠空間 |
volatile-ttl | 根據鍵值對象的ttl屬性,刪除最近將要過期的數據,如果沒有回退到noeviction |
allkeys-random | 隨機刪除所有鍵,直到有足夠空閑空間 |
過期策略allkeys-lru主從搭建測試
搭建完畢主從
開辟2M空間,往里面寫數據。1024條
- 使用腳本寫入數據
for ((i=1;i<1024;i++))
doecho -en "helloworld1" | redis-cli -c -p 7010 -x set name$i
done
- 把數據輸出
共寫入了108條數據這個時候我們再set數據查看變化