缓存淘汰算法LRU、LFU、FIFO

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,先进先出,如果缓存容量满,则优先移除最早加入缓存的数据;其内部可以使用队列实现。

类似安检行李,先进先出


原文出处:/show_1EF5nwVYkx07.html