1. 程式人生 > >常用快取淘汰演算法(LFU、LRU、ARC、FIFO、MRU)

常用快取淘汰演算法(LFU、LRU、ARC、FIFO、MRU)

https://www.jianshu.com/p/908e4b671de0

96

Java技術棧

2017.12.17 07:33* 字數 822 閱讀 1426評論 0喜歡 10

QQ用得起來越少了,現在就加入300+技術微信群,下方公眾號回覆"微信群"即可加入。

image

快取演算法是指令的一個明細表,用於決定快取系統中哪些資料應該被刪去。

常見型別包括LFU、LRU、ARC、FIFO、MRU。

最不經常使用演算法(LFU):

這個快取演算法使用一個計數器來記錄條目被訪問的頻率。通過使用LFU快取演算法,最低訪問數的條目首先被移除。這個方法並不經常使用,因為它無法對一個擁有最初高訪問率之後長時間沒有被訪問的條目快取負責。

image

最近最少使用演算法(LRU):

這個快取演算法將最近使用的條目存放到靠近快取頂部的位置。當一個新條目被訪問時,LRU將它放置到快取的頂部。當快取達到極限時,較早之前訪問的條目將從快取底部開始被移除。這裡會使用到昂貴的演算法,而且它需要記錄“年齡位”來精確顯示條目是何時被訪問的。此外,當一個LRU快取演算法刪除某個條目後,“年齡位”將隨其他條目發生改變。

image

自適應快取替換演算法(ARC):

在IBM Almaden研究中心開發,這個快取演算法同時跟蹤記錄LFU和LRU,以及驅逐快取條目,來獲得可用快取的最佳使用。

先進先出演算法(FIFO):

FIFO是英文First In First Out 的縮寫,是一種先進先出的資料快取器,他與普通儲存器的區別是沒有外部讀寫地址線,這樣使用起來非常簡單,但缺點就是隻能順序寫入資料,順序的讀出資料,其資料地址由內部讀寫指標自動加1完成,不能像普通儲存器那樣可以由地址線決定讀取或寫入某個指定的地址。

image

最近最常使用演算法(MRU):

這個快取演算法最先移除最近最常使用的條目。一個MRU演算法擅長處理一個條目越久,越容易被訪問的情況。

號外:只要從簡書過來關注下方微信公眾號的,在公眾號中回覆MM,可以免費送乾貨:2TB架構師四階段視訊教程裡面的資料。