面试题答案
一键面试LRU(最近最少使用)
- 适用场景:广泛应用于操作系统的页面置换、浏览器缓存、数据库缓存等场景。
- 原因及举例:以浏览器缓存为例,假设用户经常访问某些网页,随着时间推移,访问的网页数量增多。LRU缓存策略会优先淘汰最长时间未被访问的页面。因为通常认为近期没有被访问的页面,在未来被访问的概率也较低。这样可以保证缓存中保留的是用户最可能再次访问的网页,提高缓存命中率,加快页面加载速度。
LFU(最不经常使用)
- 适用场景:适用于数据访问频率相对稳定,且需要长期缓存的场景,如CDN(内容分发网络)缓存。
- 原因及举例:在CDN缓存中,一些内容的访问频率在一段时间内相对固定。LFU缓存策略根据数据的访问频率来淘汰数据,访问频率低的内容被优先淘汰。例如,对于一些小众的视频资源,其访问频率远低于热门视频,LFU会优先移除这类低频访问的资源,保证缓存空间留给更常被访问的内容,从而提高缓存效率。
FIFO(先进先出)
- 适用场景:适用于对数据新鲜度要求不高,但需要简单管理缓存的场景,如日志记录缓存。
- 原因及举例:在日志记录场景中,早期记录的日志数据随着时间推移重要性降低,新的日志不断产生。FIFO缓存策略按数据进入缓存的顺序淘汰数据,最先进入缓存的日志记录会被优先移除。这样既满足了缓存空间的管理需求,又不需要复杂的频率或访问时间统计,实现简单且能保证新的日志数据有足够空间被记录。