LRU缓存和内存缓存C#有什么区别

Whats the difference between LRU Caching and Memory Caching C#

请原谅我的菜鸟问题,因为我仍然是一名初级编码员,使用字典和链表的 LRU 缓存与内存缓存 C# 之间有什么区别,如何在内存缓存上实现 LRU 列表。

提前致谢。

LUR 是一种使缓存过期并将新项目添加到缓存的算法。当缓存已满时,此算法会使缓存中最近最少使用的项目过期。 MemoryCache 是 .net 4 中的 class ,之后是在堆内存中实现缓存的一种方式。缓存可以根据您缓存的媒体以不同的方式分类您可以缓存在硬盘驱动器或内存上,根据内存的位置您可以将其分类为内存中(在堆内存中)和内存外(a堆外的内存,例如在另一台服务器上)。 C# 中的 MemoryCaching 使用内存中,您必须小心,因为它可以使用应用程序的所有内存。因此,如果您有多个节点,最好不要使用它。

您必须考虑的另一件事是,当您将对象缓存在内存不足时,该对象应该是可序列化的。但是内存缓存可以缓存任何对象而无需序列化。

Least-recently-used(LRU)当缓存满了需要加值时逐出key-valueused-the-least。而 MemoryCache 会逐出最旧的 key-value,或者超过 'use-by-date' 的那些(如果碰巧有的话)。

假设您添加的第一个 key-value 很重要,并且您碰巧一直在读取,那么在 LRU 缓存中它会被保留,但在 memoryCache 中它最终会消失并需要被替换.有时虽然较旧的 key-value 消失是您的追求,因此 up-to-date 值从您的后端(例如数据库)获取。

还要考虑添加现有的 key-value 是否应被视为 'used'(因此最近更新的内容往往会保留)或者 'used' 是否仅在您阅读key-value,所以你只喜欢你 reader 喜欢的东西。一如既往,如果您有多个任务或线程使用并发,我会考虑并发。