LRU是Least Recently Used 近期最少使用算法,很多緩存策略都使用了這種策略進行空間的釋放筑凫,在學習操作系統(tǒng)的內(nèi)存回收的時候也用到了這種機制進行內(nèi)存的回收窟扑,類似的還有LFU(Least Frequently Used)最不經(jīng)常使用算法
這個里面講的是redis的內(nèi)存回收配置,其中有這么幾種:
volatile-lru -> 根據(jù)LRU算法刪除設(shè)置了超時屬性(expire)的鍵漏健,直到騰出足夠空間為止。如果沒有可刪除的鍵對象橘霎,回退到noeviction策略蔫浆。
allkeys-lru -> 根據(jù)LRU算法刪除鍵,不管數(shù)據(jù)有沒有設(shè)置超時屬性姐叁,直到騰出足夠空間為止瓦盛。
volatile-lfu -> 根據(jù)LFU算法刪除設(shè)置了超時屬性(expire)的鍵,直到騰出足夠空間為止外潜。如果沒有可刪除的鍵對象原环,回退到noeviction策略。
allkeys-lfu -> 根據(jù)LFU算法刪除鍵处窥,不管數(shù)據(jù)有沒有設(shè)置超時屬性嘱吗,直到騰出足夠空間為止。
volatile-random -> 隨機刪除過期鍵滔驾,直到騰出足夠空間為止谒麦。
allkeys-random -> 隨機刪除所有鍵,直到騰出足夠空間為止哆致。
volatile-ttl -> 根據(jù)鍵值對象的ttl屬性绕德,刪除最近將要過期數(shù)據(jù)。如果沒有摊阀,回退到noeviction策略耻蛇。
noeviction -> 不會刪除任何數(shù)據(jù),拒絕所有寫入操作并返 回客戶端錯誤信息胞此,此 時Redis只響應讀操作臣咖。
redis默認的策略就是noeviction策略,如果想要配置的話豌鹤,需要在配置文件中寫這個配置:
maxmemory-policy volatile-lru