Redis4.0的淘汰策略簡述

Redis4.0中有7種數據淘汰策略(4.0版本以前只有5種),數據淘汰策略與redis配置中的最大內存參數配合使用,能發揮對數據更迭的最大優點
 
  • 前言
科普下兩個算法
LRU,全程Least RecentLy Use ,中文名最近最少使用,是一種算法,在操做系統的內存頁面置換中應用出名。因爲此應用場景的相似點,redis的淘汰策略中也有引入這個算法
LFU,全稱Least Frequently Use ,中文名 最不常常使用
 
  • 正文
先看下redis配置文件的說明(這裏說明下,配置說明中說是5種配置,不過在選項中卻比原有3.0增長了和lfu有關的兩個策略,因此實際是有7種)
MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
# is reached. You can select among five behaviors:
#
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
 
redis配置文件中默認是沒有進行數據淘汰的,也就是
maxmemory-policy noeviction
 
逐一解釋下各個策略
一、volatile-lru,根據最近最少使用算法,淘汰帶有 有效期 屬性的key及其數據。是4.0版本以前最常選用的策略
 
二、allkeys-lru,一樣根據最近最少使用算法,可是淘汰範圍的key是全部的key
 
三、volatile-lfu,根據最不常常使用算法,淘汰帶有 有效期 屬性的key及其數據。是4.0版本新增的淘汰機制,我的以爲這種策略會與第1種策略成爲兩種最佳的選擇
 
四、allkeys-lfu,與第二種的淘汰範圍相同,不過使用的算法是最不常常使用算法。一樣是4.0版本新增的淘汰機制
 
五、volatile-random,隨機淘汰帶有 有效期 屬性的key及其數據
 
六、allkeys-random,全部key都隨機淘汰
 
七、volatile-ttl,淘汰有效期屬性最少的key及其數據,ttl是 Time To Live的縮寫
 
數據淘汰機制配合上redis的 maxmemory  服務器正常的狀況下,對數據的輪替起到較好做用。這裏反向來講,就要求咱們平時寫數據的時候,除了常量和重要信息之外,數據都應該加上有效期,爲數據輪替淘汰作儲備
相關文章
相關標籤/搜索