LRU缓存和内存缓存的区别是什么?

本文关键字:缓存 是什么 区别 内存 LRU | 更新日期: 2023-09-27 18:13:21

请原谅我的新手问题,因为我仍然是一个初级程序员,使用字典和链表的LRU缓存与使用内存缓存的LRU缓存有什么区别,如何在内存缓存上实现LRU列表。

LRU缓存和内存缓存的区别是什么?

LRU是一个缓存过期和添加新条目到缓存的算法。当缓存已满时,此算法将使最近最少使用的项在缓存中过期。

MemoryCache是。net 4中的一个类,之后是在堆内存中实现缓存的一种方式。缓存可以根据您可以缓存在硬盘驱动器或内存上的媒体以不同的方式进行分类,根据内存的位置您可以将其分类为内存内(在堆内存中)和内存外(例如在另一台服务器上的堆外内存)。c#中的MemoryCaching使用内存,你必须小心,因为它会使用应用程序的所有内存。因此,如果您有多个节点,最好不要使用它。

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

最近最少使用(Least-recently-used, LRU)会在缓存已满且需要添加值时,退出使用最少的键值。然而,MemoryCache会清除最老的键值,或者那些超过"截止使用日期"的键值(如果碰巧有的话)。

假设你添加的第一个键值是至关重要的,并且你碰巧一直在读,那么在LRU缓存中它将被保留,但在memoryCache中它最终会消失并需要被替换。有时,虽然旧的键值消失是你想要的,所以最新的值从你的后端(例如数据库)拉出来。

还要考虑添加一个现有的键值是否应该被认为是"使用"的(所以最近更新的东西倾向于留在周围),或者如果"使用"只是当你读一个键值,所以你只喜欢你的读者喜欢的东西。像往常一样,如果您有多个任务或线程使用它,我会考虑并发性。