LRU 快取淘汰演算法

2021-09-07 08:48:35 字數 739 閱讀 4664

1.介紹

lru是leastrecentlyused近期最少使用演算法。記憶體管理的一種頁面置換演算法,對於在記憶體中但又不用的資料塊(記憶體塊)叫做lru,oracle會根據哪些資料屬於lru而將其移出記憶體而騰出空間來載入另外的資料。

lru(least recently used,最近最少使用)演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是「如果資料最近被訪問過,那麼將來被訪問的機率也更高」。

2.實現原理圖

使用鍊錶儲存快取資料實現。

1. 新資料插入到鍊錶頭部;

2. 每當快取命中(即快取資料被訪問),則將資料移到鍊錶頭部;

3. 當鍊表滿的時候,將鍊錶尾部的資料丟棄。

3.命中率

當存在熱點資料時,lru的效率很好,但偶發性的、週期性的批量操作會導致lru命中率急劇下降,快取汙染情況比較嚴重。

4.舉例

假設 序列為 4 3 4 2 3 1 4 2,物理塊有3個

則:首輪 4調入記憶體 4

次輪 3調入記憶體 3 4

之後 4調入記憶體 4 3

之後 2調入記憶體 2 4 3

之後 3調入記憶體 3 2 4

之後 1調入記憶體 1 3 2(因為最少使用的是4,所以丟棄4)

之後 4調入記憶體 4 1 3(原理同上)

最後 2調入記憶體 2 4 1

快取淘汰演算法 LRU

1.lru 1.1.原理 lru least recently used,最近最少使用 演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是 如果資料最近被訪問過,那麼將來被訪問的機率也更高 1.2.實現 最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下 1.新資料插入到鍊錶頭部 2....

LRU快取淘汰演算法

這是乙個什麼演算法?這是乙個可以處理程式過多的情況下該刪除哪乙個程式的演算法策略。它是根據最近使用時間來進行確定的,通常刪除的是最後乙個節點。那麼這個演算法會涉及什麼樣的資料結構?這個演算法涉及了hashmap和雙向鍊錶的資料結構,通過這兩個結構的配合可以通過map來快速定位訪問節點,通過雙向鍊錶來...

快取淘汰演算法LRU

least recently used,即最近最少使用,是記憶體管理的一種頁面置換演算法。演算法的核心是 如果乙個資料在最近一段時間內沒有被訪問到,那麼它在將來被訪問的可能性也很小。換言之,當記憶體達到極限時,應該把記憶體中最久沒有被訪問的資料淘汰掉。理論上只需要乙個列表,資料被使用時,不在lru列...