什麼是lru演算法
lru演算法中文名叫「最近最少使用」,是一種資料快取淘汰演算法,可以實現基於磁碟和記憶體的快取淘汰
演算法原理
lru演算法根據資料的歷史使用記錄來進行資料淘汰。lru演算法認為,最近被使用過的資料,那麼將來會更多的被使用。lru實現資料淘汰的原理就是當資料快取達到預設的最大值時,就會淘汰最久未被使用的資料。
使用場景
lru演算法適用於需要經常訪問某些熱資料,並且大部分資料都會被重複訪問的場景
lru演算法實現方式
基於陣列
使用陣列實現lru演算法的基本過程如下:
基於單鏈表
使用單鏈表實現lru演算法基本過程如下:
lru演算法優缺點
當存在熱點資料時,並且這些大部分資料還是經常被使用的,lru命中率較高,不需要經常進行資料的新增和刪除
如果只有很少的資料被經常使用,lru演算法很低效。因為lru命中率很低,經常需要淘汰資料。也就是「快取汙染」問題,快取的資料並沒有很大程度上重複使用
lru-k演算法
lru-k演算法是為了解決lru演算法的「快取汙染」問題。可以認為,lru演算法就是lru-1演算法。lru-k演算法目的就是把lru演算法的「最近一次被使用」賦能為「最近k次被使用」。
lru-k演算法原理
lru-k演算法相比於lru(lru-1)演算法,lru-k演算法一開始不會真正快取資料,只有資料被使用過了k次才會放入快取之中。那麼,在資料沒有被真正快取之前,資料放在**的呢?如何記錄使用次數的呢?lru-k演算法會多維護乙個佇列,用於儲存資料的使用記錄。但佇列中的資料使用達到k次就取出來放進快取。淘汰快取資料和lru(lru-1)原理一樣,第k次使用時間最早的先淘汰。
雙佇列模式lru
雙佇列lru演算法,使用fifo佇列和lru佇列快取資料。和lru-k不同的是,雙佇列lru演算法兩個佇列都快取資料,lru-k演算法只使用乙個快取佇列快取資料,乙個佇列記錄資料使用情況
多佇列模式lru
多佇列模式lru的原理是使用多個佇列,按照資料不同的使用頻率來快取資料,也就是多優先順序快取。命中的資料會逐漸從低優先順序佇列快取到高優先順序佇列。高優先順序佇列的資料會逐漸從淘汰到低優先順序佇列,最後真正被淘汰
系列文章
資料結構小白系列之資料結構概述
機器學習之LR演算法理論和實戰(理論篇)
本文 行向量 都是 w t x i 都是加了t 列向量 都是 w x i y i y i x i 都不加t,也有例外,如 y y 1,y 2,y m 則是行向量,反正這違反這一約定的情況下,一定會在旁邊說明 主要用於二分類演算法,不妨用 1 0 表示兩個類 不妨記sigmoid 為 sigma si...
資料結構與演算法(5)排序演算法(理論)
時間複雜度為 o nlogn 的三種排序演算法 2.排序演算法的三個分析指標 最常用的排序演算法 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 基數排序 桶排序。按照時間複雜度可分為三類 氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求。...
資料結構之演算法篇
演算法 是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 1.輸入輸出 演算法具有零個或多個輸入,至少有乙個或多個輸出。2.有窮性 指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。3.確定性 演算...