LRU
LRU,Least recently used,最近最少使用
思想是:如果数据 最近被访问过,那么将来被访问的几率也更高。
与最近访问的 时间 有关
例子
如下的访问模式,A每5s访问一次,B每2s访问一次,C与D每10s访问一次,| 代表计算空闲时间的截止点:
~~~~~A~~~~~A~~~~~A~~~~A~~~~~A~~~~~A~~|
~~B~~B~~B~~B~~B~~B~~B~~B~~B~~B~~B~~B~|
~~~~~~~~~~C~~~~~~~~~C~~~~~~~~~C~~~~~~|
~~~~~D~~~~~~~~~~D~~~~~~~~~D~~~~~~~~~D|
可以看到,LRU对于A、B、C工作的很好,完美预测了将来被访问到的概率B>A>C
LRU缺陷: 将D误认为将来最有可能被访问到的数据。
但是,总体来说,LRU算法已经是一个性能足够好的算法了
LFU
Least Frequently Used,最近最不常用
思想是:如果数据在 最近一段时间内访问次数很少,那么在将来被访问的可能性也很小。
与最近访问的 频率 有关
当缓存容量满时,移除最近 访问次数最少 的元素
解决了 LRU 的缺陷
FIFO
First in First out,先进先出,如果缓存容量满,则优先移除最早加入缓存的数据;其内部可以使用队列实现。
类似安检行李,先进先出
