redis筆記之淘汰策略

2021-10-12 03:06:34 字數 1063 閱讀 6150

redis把過期的資料都清除完畢後,大量的資料還是會對記憶體進行占用,記憶體的大小可以進行自我配置。

使用maxmemory配置指令是為了將redis配置為對資料集使用指定的記憶體量。

可以在redis.conf中進行配置

maxmemory 
也可以在執行時使用config set命令來設定。

redis> config set maxmemory 
設定maxmemory為零將導致沒有記憶體限制。這是64位系統的預設行為,而32位系統使用3gb的隱式記憶體限制。

當達到指定的記憶體量時,可以在不同的行為之間進行選擇,這稱為策略。

maxmemory使用maxmemory-policy配置指令配置達到限制時,會發生確切的行為redis 。

可以使用以下策略:

lru(least recently used) 最久未使用,衡量標準是時間

allkeys-lru:通過嘗試先刪除較新使用的(lru)鍵來退出鍵,以便為新增的新資料騰出空間。

volatile-lru:通過嘗試先刪除較新使用的(lru)金鑰來退出金鑰,但僅在已設定了expire set的金鑰之中,以便為新增的新資料騰出空間。

lfu least frequency used 最不常使用,根據時間次數,時間倒排,實現末尾淘汰

volatile-lfu 使用具有過期集的金鑰在近似lfu中進行驅逐。

allkeys-lfu 使用近似的lfu退出任何密​​鑰。

random

allkeys-random:隨機逐出金鑰,以便為新增的新資料騰出空間。

volatile-random:隨機逐出鍵,以便為新增的新資料騰出空間,但僅逐出設定了expire set的鍵。

ttlvolatile-ttl:逐出設定了expire的鍵,並嘗試首先逐出具有較短生存時間(ttl)的鍵,以便為新增的新資料騰出空間。

noeviction:預設策略。不會刪除任何資料,拒絕所有寫入的操作並返回客戶端錯誤資訊(error)oom command not allowed when used memory。此時redis只響應該操作

Redis淘汰策略

將 redis 用作快取時,如果記憶體空間用滿,就會自動驅逐老的資料。maxmemory用於指定 redis 能使用的最大記憶體。既可以在redis.conf檔案中設定,也可以在執行過程中通過 config set 命令動態修改 當記憶體使用達到最大限制時,如果需要儲存新資料,根據配置的策略 pol...

redis 淘汰策略

lru least recently used 演算法,如果資料最近被訪問過,那麼將來被剛問的機率也是很高的。lfu lfu 如果資料過去被訪問多次,那麼將來被剛問的機率也是更高。過期策略 1惰性刪除,當key被訪問時檢查改key的過期時間,若已過期刪除,已過期未被訪問的資料保持在記憶體中,小號記憶...

redis 淘汰策略

redis 淘汰策略有哪些?1,volatile lru 從已設定過期時間的雜湊表 server.db i expires 中隨機挑選多個key,然後在選到的key中用lru演算法淘汰最近最少使用的資料 2,allkey lru 從所有key的雜湊表 server.db i dict 中隨機挑選多個...