MST

星途 面试题库

面试题:缓存设计之LRU、LFU与FIFO应用场景分析

请阐述在后端开发中,LRU、LFU和FIFO这三种缓存类型分别适用于哪些常见的应用场景,并举例说明为什么在这些场景下该缓存类型会是比较好的选择。
24.0万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

LRU(最近最少使用)

  • 适用场景:广泛应用于操作系统的页面置换、浏览器缓存、数据库缓存等场景。
  • 原因及举例:以浏览器缓存为例,假设用户经常访问某些网页,随着时间推移,访问的网页数量增多。LRU缓存策略会优先淘汰最长时间未被访问的页面。因为通常认为近期没有被访问的页面,在未来被访问的概率也较低。这样可以保证缓存中保留的是用户最可能再次访问的网页,提高缓存命中率,加快页面加载速度。

LFU(最不经常使用)

  • 适用场景:适用于数据访问频率相对稳定,且需要长期缓存的场景,如CDN(内容分发网络)缓存。
  • 原因及举例:在CDN缓存中,一些内容的访问频率在一段时间内相对固定。LFU缓存策略根据数据的访问频率来淘汰数据,访问频率低的内容被优先淘汰。例如,对于一些小众的视频资源,其访问频率远低于热门视频,LFU会优先移除这类低频访问的资源,保证缓存空间留给更常被访问的内容,从而提高缓存效率。

FIFO(先进先出)

  • 适用场景:适用于对数据新鲜度要求不高,但需要简单管理缓存的场景,如日志记录缓存。
  • 原因及举例:在日志记录场景中,早期记录的日志数据随着时间推移重要性降低,新的日志不断产生。FIFO缓存策略按数据进入缓存的顺序淘汰数据,最先进入缓存的日志记录会被优先移除。这样既满足了缓存空间的管理需求,又不需要复杂的频率或访问时间统计,实现简单且能保证新的日志数据有足够空间被记录。