【问题标题】:In which case LFU is better than LRU?在哪种情况下 LFU 比 LRU 更好?
【发布时间】:2017-11-04 17:25:09
【问题描述】:

我一直在努力寻找 LFU 优于 LRU 的好案例,但我不确定。

当你有一个容量为 3 的缓存并且缓存请求为 4(如 ABCD)但 C 和 D 被更频繁地请求时,我已经设法做到(但不确定这是否是一个很好的例子)。

所以如果请求流是A B C D C A D B D C A B A C D LRU 会产生 10 个故障,而 LFU 会产生 9 个故障。

这是一个被接受的案例吗??

【问题讨论】:

  • LRU 对于小缓存更有效,但对大缓存的扩展性很差。其中,缓存的典型 Zipf 工作负载占主导地位,因此 LFU 通常在较低容量下具有较高的命中率。 LRU 在扫描(例如数据库)中也存在问题,并且经常被绕过。现代政策将两者结合起来,以找到更理想的平衡点。

标签: caching lru


【解决方案1】:

您可能会发现this 很有帮助。 LRU 非常前卫。

您的移动键盘使用LFU。当您键入一些字母时,您会在键盘顶部看到一些与您键入的字母匹配的建议单词。一开始,当键盘应用程序的cache 为空时,它可能会向您显示这 4 个单词(假设您输入了字母“STA”。建议的单词可能会弹出,例如:开始、站立、雕像、工作人员)。这里的想法是,根据您使用的单词,它会在一段时间后忽略建议中的LRU 单词。如果您没有使用过,您以后可能在建议中看不到“员工”一词。

如果您知道数据非常重复,请务必选择LFU 以避免cache 错过。 看来这两者的独立性相当明显,具有孤立的意义。这取决于你想在哪里使用这些用例。

【讨论】:

    【解决方案2】:

    可能会发生某些数据在过去很流行,现在暂时变得无关紧要,但在不久的将来很可能会再次访问。

    想想在线零售商。假设他们最畅销的一些商品是相机、电话等。如果情人节快到了,人们会为情人节订购礼物。因此,如果您实现了 LRU 缓存,即最近最少使用的缓存,它将从缓存中清除您最畅销的商品。

    虽然 LRU 策略从不保证最畅销的商品会保留在缓存中,但访问它们的频率越高,它们就越有可能保留在缓存中(因为它们很可能会进入被清除之前的队列)。在高峰期,如果数量 突然流行的项目足够大,它们可以填满缓存并强制清除通常的项目。这将是一个暂时的副作用,会在峰值之后消退。在某些情况下,这也可能是可取的,因为在高峰期流行的商品的访问速度应该比常规畅销商品更快。

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 2016-12-24
      • 2016-03-21
      相关资源
      最近更新 更多