1. 程式人生 > >緩存算法

緩存算法

queue req 都是 placement 指定 rec 中文 threshold recently

在實現緩存算法的時候,通常會考慮使用頻率獲取成本緩存容量時間等因素。

Least-Recently-Used(LRU)

替換掉最近被請求最少的對象,也就是淘汰最長時間未被使用的對象。該算法可以通過跟蹤對象的最後訪問時間並依據最後訪問時間排序實現。

Least-Frequently-Used(LFU)

替換掉訪問次數最少的緩存,也就是淘汰一定時間內唄訪問次數最少的對象。該算法可以通過跟蹤對象在指定時間段內的訪問次數並根據訪問次數排序實現。

Least-Recently-Used(LRU2)

把被兩次訪問過的對象放入緩存池。當緩存池滿了之後,會把有兩次最少使用的緩存對象去除。

Two Queues(2Q)

把被訪問的數據放到LRU的緩存中,如果這個對象再一次被訪問,就把他轉移到第二個、更大的LRU緩存。

SIZE

替換占用空間最大的對象。

LRU-Threshold

不緩存超過某一size的對象。

Log(Size)+LRU

替換size最大的對象,當size相同時,按LRU進行替換。

Hyper-G

LFU的改進版,同時考慮上次訪問時間和對象size。

Pitkow/Recker

替換最近最少使用的對象,除非所有對象都是今天訪問過的。如果是這樣,則替換掉最大的對象。

Lowest-Latency-First

替換下載時間最少的文檔。

Hybrid Hybrid

減少平均延遲。對緩存中的每個文檔都會計算一個保留效用,保留效用最低的對象會被替換掉。

Lowest Relative Value(LRV)

LRV也是基於計算緩存中文檔的保留效用,然後替換保留效用最低的文檔。

Adaptive Replacement Cache(ARC)

介於LRU和LFU之間,由兩個LRU組成,第一個包含的條目是最近只被使用過一次的,而第二個LRU包含的是最近被使用過兩次的條目。

Most Recently Used(MRU)

移除最近最多被使用的對象。

First in First out(FIFO)

FIFO通過一個隊列去跟蹤所有的緩存對象,當緩存容量滿時,排在前面的緩存對象會被剔除。

Random Cache

隨機的替換緩存數據。

緩存算法