关于c#:此算法是LRU还是MRU?

Is this algorithm implementation LRU or MRU?

我正在使用C#在我的项目中实现MRU(最近使用最多)缓存。
我在Google上搜索了有关MRU的一些概念和实现,以及与之相反的LRU(最近最少使用的LRU),并找到了本文http://www.informit.com/guides/content.aspx?g=dotnet


在我看来,它就像是MRU的实现。请注意,搜索是如何从链接列表的开头开始并返回的,每当访问一个节点时,它就会移到列表的前面。在Add()中,使用AddFirst()添加该节点,而在TryGetValue()中,它删除该节点并将其添加到列表的前面。


基于此处记录的内容:http://en.wikipedia.org/wiki/Cache_algorithms#Most_Recently_Used

是LRU。考虑items是一个"有序列表"。

最近使用的项目在"前面"。
添加新项目时,它们会调用items.AddFirst(newNode);,将其添加到列表的最前面。
当一个项目被"触摸"时,他们使用以下调用将其移动到列表的最前面:

1
2
items.Remove(node);
items.AddFirst(node);

当列表已满时,它使用items.RemoveLast();

从列表中推送"最后" /"最旧"项目

当缓存达到容量上限时,它将首先删除"最近最少使用"的项目。


Microsoft的" MRU"列表正确使用LRU缓存替换算法。

请注意,在这种情况下,Microsoft对MRU列表使用的术语与缓存社区使用的术语不同。

缓存社区使用MRU / LRU讨论替换(或逐出)策略。当缓存已满时,您需要在列表中放置一个新项目,应从列表中删除哪个项目?

Microsoft提供了用于获取最近使用的项目的工具,例如下拉列表或最近的文档列表。

  • https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/mru-source-list-functions
  • https://www.codeproject.com/articles/78/most-recently-used-list-in-a-combobox

这意味着要正确实现MRU列表,您需要实现LRU缓存逐出策略。