LRU
Least recently used,最近最少使用。核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
最常见的实现是使用一个链表保存缓存数据
LFU
Least Frequently Used,最不常使用。在一段时间内,数据被使用频次最少的优先被淘汰。
主要是记录和追踪内存块的使用次数,当缓存已满并且需要更多空间时,系统将以最低内存块使用频率清除内存
缺陷:短期内频次高点缓存,会晋升为热点数据,而保证不会淘汰。而实际上,这部分数据只是短暂的高频率访问,之后将会长期不访问,瞬时的高频访问将会造成这部分数据的引用频率加快,而一些新加入的缓存很容易被快速删除,因为它们的引用频率很低。
LRU和LFU侧重点不同,LRU主要体现在对元素的使用时间上,LFU主要体现在对元素的使用频次上。