LFU算法族相关文章目录汇总:
window-LFU算法(本文)
1、LFU算法的不足
LFU(Least Frequently Used)是一种缓存淘汰算法。LFU算法是根据缓存的访问频率,去淘汰访问次数最低的缓存。这样就给LFU带来了两个问题:
- 不可避免的问题:对于每个缓存项,LFU都需要记录其访问次数,这导致了LFU需要一笔不小的额外内存开销;
- 可一定程度避免的问题:对于记录的访问次数,LFU要对其进行排序,用于淘汰访问次数最低的算法。而对大量数据的排序,则会带来一定的处理器开销。当然,这个开销可以通过在每次操作时调整排序顺序,来避免在内存淘汰时一次发生。
同时,由于LFU记录的是缓存生成以来访问频率,如果一条缓存曾经访问了很多次,但是如果服务的逻辑发生了改变,这条缓存已经很少甚至不再会被访问,这条缓存由于其历史访问次数很高,依然不会被淘汰。这就导致了缓存污染的问题:
- 缓存污染