why? when? what?
之前面试有问到 LRU 自己没好好准备没答好,现在发现自己竟然把 LRU 理解成了 LFU 呃…
每个算法都有自己的应用场景以及优缺点。各种缓存算法的核心区别在于它的淘汰机制。而这个淘汰机制主要参考这两个维度:最后被访问的时间和最近被访问的频率次数。
LRU(Least Recently Used ):淘汰最后被访问时间最久的元素。
缺点:可能会由于一次冷数据的批量查询而误导大量热点的数据。
LFU(Least Frequently Used):淘汰最近访问频率最小的元素。
缺点:1. 最新加入的数据常常会被踢除,因为其起始方法次数少。 2. 如果频率时间度量是1小时,则平均一天每个小时内的访问频率1000的热点数据可能会被2个小时的一段时间内的访问频率是1001的数据剔除掉