redis記憶體淘汰機制有:1、noeviction,當記憶體使用達到閾值的時候,所有引起申請記憶體的指令會報錯;2、allkeys-lru,在主鍵空間中,優先移除最近未使用的key;3、allkeys-random,在主鍵空間中,隨機移除。
記憶體淘汰策略
記憶體淘汰只是Redis 提供的功能,為了更好地實現這個功能,必須為不同的應用場景提供不同的策略,記憶體淘汰策略講的是為實現記憶體淘汰我們具體怎麼做,要解決的問題包括淘汰鍵空間如何選擇?在鍵空間中淘汰鍵如何選擇?
Redis 提供了以下幾種淘汰策略供使用者選擇,其中預設的策略為noeviction
策略:
noeviction:當記憶體使用達到閾值的時候,所有引起申請記憶體的命令都會報錯
allkeys-lru:在主鍵空間中,優先移除最近未使用的
keyvolatile-lru:在設定了過期時間的鍵空間中,優先移除最近未使用的
keyallkeys-random:在主鍵空間中,隨機移除某個
keyvolatile-random:在設定了過期時間的鍵空間中,隨機移除某個
keyvolatile-ttl:在設定了過期在時間的鍵空間中,具有更早過期時間的key 優先移除
這裡補充一下主鍵空間和設定了過期時間的鍵空間,舉個例子,假設我們有一批鍵儲存在Redis中,則有那麼一個哈希表用於儲存這批鍵及其值,如果這批鍵中有一部分設定了過期時間,那麼這批鍵還會被儲存到另一個雜湊表中,這個哈希表中的值對應的是鍵被設定的過期時間。設定了過期時間的鍵空間為主鍵空間的子集。
推薦教學: 《Redis教學》
以上是redis記憶體淘汰機制有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!