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

C# LRU缓存和内存缓存C之间有什么区别#,c#,caching,memory,lru,C#,Caching,Memory,Lru,请原谅我的noob问题,因为我还是一名初级程序员,使用字典和链表的LRU缓存与内存缓存C#有什么区别,如何在内存缓存上实现LRU列表 提前感谢。LUR是一种使缓存过期并向缓存中添加新项的算法。当缓存已满时,此算法将使缓存中最近最少使用的项过期。MemoryCache是.NET4中的一个类,之后是在堆内存中实现缓存的一种方法。缓存可以根据缓存在硬盘或内存上的介质以不同的方式进行分类,根据内存的位置,可以将其分类为内存内(堆内存内)和内存外(堆外的内存,例如在另一台服务器上)。c#中的内存缓存使用内

请原谅我的noob问题,因为我还是一名初级程序员,使用字典和链表的LRU缓存与内存缓存C#有什么区别,如何在内存缓存上实现LRU列表


提前感谢。

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


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

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

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

最近使用最少(LRU)在缓存已满且需要添加值时收回使用最少的键值。然而,MemoryCache会逐出最早的键值,或者那些超过“按日期使用”的键值(如果碰巧有)

比如说,如果您添加的第一个键值非常重要,并且您碰巧一直在读取,那么在LRU缓存中,它会被保留,但在memoryCache中,它最终会消失,需要被替换。有时,虽然旧的键值会消失是您的目标,但最新的值会从后端(例如数据库)获得

还应考虑是否应将添加现有键值视为“已使用”(因此最近更新的内容往往会保留),或者如果“已使用”仅在您阅读键值时使用,那么您只喜欢您的读者喜欢的内容。如果你有一个以上的任务或线程使用它,我会考虑并发。

最近最少使用的(LRU)在缓存满的时候,使用最少的密钥值,并且需要添加一个值。然而,MemoryCache会逐出最早的键值,或者那些超过“按日期使用”的键值(如果碰巧有)

比如说,如果您添加的第一个键值非常重要,并且您碰巧一直在读取,那么在LRU缓存中,它会被保留,但在memoryCache中,它最终会消失,需要被替换。有时,虽然旧的键值会消失是您的目标,但最新的值会从后端(例如数据库)获得


还应考虑是否应将添加现有键值视为“已使用”(因此最近更新的内容往往会保留),或者如果“已使用”仅在您阅读键值时使用,那么您只喜欢您的读者喜欢的内容。如果你有一个以上的任务或线程使用它,我会考虑并发。

与你用任何其他语言做的事情没有多大的不同——也许如果你能说你试过你自己的话,我们可以回答,但是现在这是一个非常开放和广泛的问题,不适合这里(抱歉)。LRU缓存通常是使缓存中未使用的实体“过期”的一种方式。LRU的一个实现是BCL中的
MemoryCache
类。它与您在任何其他语言中所做的没有太大区别-也许您可以说您自己尝试了什么,我们可以回答,但现在这是一个非常开放和广泛的问题,不适合这里(抱歉)LRU缓存通常是“过期”的一种方式缓存中未使用的实体。LRU的一个实现是BCL中的
MemoryCache
类。