C#结构就像一个对象缓存

时间:2017-04-04 19:11:35

标签: c# data-structures structure

我正在寻找一种通用结构,这样我就可以提供一些物品。然后,每次我将一个项目添加到此列表时,将删除最旧的项目(具有最早访问权限的项目)以保留具有固定大小的项目。

每个项目都有一个密钥(在我的情况下是日期时间,但这应该是通用的)。

这个结构甚至可以只有一个方法:TItem Get(TKey key),但如果它还没有在缓存中,我们必须提供一个委托来检索它。

你知道这样的结构吗?理想情况下存在于.Net 4.5中?

我知道MemoryCache但是:

  • 我没有找到如何拥有特定数量的物品
  • 似乎密钥必须是字符串
  • 这不是通用的

它必须是一个更好的课程,不是吗?我当然可以自己做一个,但我不想重新发明轮子,我需要一些试验来获得真正有效的东西。

1 个答案:

答案 0 :(得分:0)

您所描述的内容称为LRU(最近最少使用)缓存。该对的许多实现是具有LinkedList的Dictionary。 Dictionary提供快速键控访问,LinkedList提供快速删除最旧元素的功能。这两个操作在某种程度上相互矛盾,这就是为什么很难找到满足两者的单一结构的原因。

如果您在互联网上搜索LRU缓存,您会发现许多实现。我对我做过的一些实现做了3-post series