Redis系列之 記憶體淘汰策略(筆記)

2022-03-30 03:27:52 字數 884 閱讀 1988

一、redis

---獲取設定的redis能使用的最大記憶體大小

127.0.0.1:6379[10]> config get

maxmemory

1) "

maxmemory

"2) "0"

--獲取當前記憶體淘汰策略:

127.0.0.1:6379[10]> config get maxmemory-policy

1) "

maxmemory-policy

"2) "

noeviction

"

注意,在64bit系統下,maxmemory設定為0表示不限制redis記憶體使用,在32bit系統下,maxmemory不能超過3gb

二、redis的記憶體淘汰策略

既然可以設定redis最大占用記憶體大小,那麼配置的記憶體就有用完的時候。那在記憶體用完的時候,還繼續往redis裡面新增資料不就沒記憶體可用了嗎?

實際上redis定義了幾種策略用來處理這種情況:

noeviction(預設策略):對於寫請求不再提供服務,直接返回錯誤(del請求和部分特殊請求除外)

allkeys-lru:從所有key中使用lru演算法進行淘汰

volatile-lru:從設定了過期時間的key中使用lru演算法進行淘汰

allkeys-random:從所有key中隨機淘汰資料

volatile-random:從設定了過期時間的key中隨機淘汰

volatile-ttl:在設定了過期時間的key中,根據key的過期時間進行淘汰,越早過期的越優先被淘汰

當使用volatile-lru、volatile-random、volatile-ttl這三種策略時,如果沒有key可以被淘汰,則和noeviction一樣返回錯誤

redis記憶體淘汰策略

lru least recently used,最近很少使用 思想 越最近使用過的資料,接下來使用的機會越大,越應該保留,剔除哪些很久之前使用過的資料 新資料插入到列表頭部 每當快取命中 即快取資料被訪問 則將資料移到列表頭部 當列表滿的時候,將列表尾部的資料丟棄。lfu least frequen...

redis 記憶體淘汰策略配置

在配置檔案有一行 maxmemory policy volatile lru 對應的策略 noeviction 當記憶體使用達到閾值的時候,所有引起申請記憶體的命令會報錯。volatile lru 在設定了過期時間的鍵空間中,優先移除最近未使用的key。allkeys random 在主鍵空間中,隨...

Redis 記憶體資料淘汰策略

no eviction 預設策略。禁止驅逐,保證資料不會丟失 allkeys lru 針對所有key,優先刪除最近最少使用 less recently used 的key volatile lru 針對設定了過期時間的key,優先刪除最近最少使用 less recently used 的key al...