MST
星途 面试题库

面试题:缓存设计:MRU策略与其他策略对比及优化

在实际的后端缓存场景中,MRU与LRU(Least Recently Used)缓存替换策略各有什么优缺点?如果系统对读取性能要求极高且写入操作相对较少,如何基于MRU策略进行优化以提高整体缓存效率?
16.0万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

LRU(Least Recently Used)优缺点

  • 优点
    • 符合局部性原理,近期最少使用的数据大概率在未来也较少使用,能较好地预测数据的使用频率,在很多场景下能有效缓存热点数据。
    • 实现相对简单,可通过哈希表和双向链表的数据结构高效实现,时间复杂度为O(1)。
  • 缺点
    • 对突发访问不适应,如果某一冷数据突然被大量访问,LRU会快速将其加入缓存,可能会淘汰掉其他热点数据,导致缓存命中率下降。
    • 没有考虑数据的访问频率,只关注最近访问时间,可能将偶尔访问但访问时间近的数据保留,而淘汰频繁访问但稍久未访问的数据。

MRU(Most Recently Used)优缺点

  • 优点
    • 对于写入操作频繁且写入数据大概率马上会被读取的场景,能保证新写入的数据在缓存中,提高读取命中率。
    • 实现相对容易,类似LRU的哈希表和双向链表结构,只是链表操作逻辑稍有不同。
  • 缺点
    • 对于长时间运行且读取模式较稳定的系统,会不断将新访问的数据移到缓存头部,而忽略了长期热点数据,导致缓存命中率较低。
    • 浪费缓存空间,可能一直保留近期访问但实际不需要长期存在缓存中的数据。

基于MRU策略针对高读取性能且少写入操作的优化

  • 引入访问频率计数:为每个缓存数据项增加一个访问频率计数器,每次数据被读取时,不仅将其移到MRU位置,还增加其访问频率计数。定期(或在缓存淘汰时)根据访问频率对缓存数据进行调整,对于访问频率高的数据,即使是较久之前访问的,也适当提高其保留在缓存中的优先级。
  • 设置多级缓存:结合LRU策略设置多级缓存,比如一级缓存采用MRU策略,用于快速响应最近访问的数据;二级缓存采用LRU策略,存储那些曾经是热点但近期访问少的数据。当一级缓存未命中时,再去二级缓存查找。这样既利用了MRU对近期访问数据的快速响应,又结合LRU对热点数据的长期缓存能力。
  • 缓存预取:根据系统的业务逻辑和历史访问模式,提前预测可能会被访问的数据,并将其加载到缓存中。对于那些写入少但读取性能要求高的系统,提前加载数据到MRU缓存能有效减少缓存未命中次数,提高整体缓存效率。