幾種緩存算法


LRU (Least Recently Used 最近最少使用)
不斷將最近使用的對象放到列表的頂部,這樣最近最少使用的對象就會慢慢沉到底部,當容量不足的時候,能夠將底部的對象去除,以留出空間給新的對象。算法

LRU-2
LRU-2算法是LRU算法的一個優化算法。LRU會將最近訪問過的對象放置到頂部,可是有時候一次訪問不能表明緩存以後會被繼續訪問,因此後來增長了一個閾值,當訪問達到必定次數以後纔會加入到緩存列表的頂部。未達到閾值的對象會暫時緩存在另一張表中,基於LRU算法更新。閥值能夠設置爲2,3,4等等,可是經過實踐後發現閥值設置爲2有更好的適用性,因此通常都使用2做爲閥值緩存

FIFO(First In First Out  先進先出)
FIFO是將管理一個緩存列表,將先生成的緩存放在前面,最近生成的緩存放在列表的後面。當緩存空間滿的時候,將最先生成的緩存去除。該算法很簡單,可是緩存效果很差。app

LFU(Least Frequently Used 最不常常使用)
LFU是給每一個緩存對象設置一個緩存頻率,當緩存空間不足時,將最少使用的緩存對象去除。當遇到某些緩存對象以前歷史上使用頻率很高,可是以後再也不使用時,這種算法會致使沒有價值的緩存長期在緩存中駐留,致使實際可用的緩存空間減小。dom

RAND(Random Algorithm)
當緩存空間不足時,系統經過一個隨機值刪除緩存空間中的隨機一個緩存對象。這種算法也是比較簡單的,可是命中率很低。優化

OPT(Optimal Replacement Algorithm 最優替換)
當緩存空間不足時,系統將將來最不可能被使用的緩存對象除去。這是最好的算法,惟一的缺點是沒法實現。.net

參考文檔:對象

https://my.oschina.net/jiangch/blog/678491blog

http://blog.csdn.net/appletreesujie/article/details/8262959文檔

相關文章
相關標籤/搜索