簡體   English   中英

LRU緩存和內存緩存C#有什么區別

[英]Whats the difference between LRU Caching and Memory Caching C#

請原諒我的菜鳥問題,因為我還是一名初級編碼員,使用Dictionary and Linked List和Memory Caching C#進行LRU Caching的區別是什么,比如說如何在內存緩存上實現LRU list。

提前致謝。

LUR是一種使緩存過期並將新項目添加到緩存的算法。 當緩存已滿時,此算法會使緩存中最近最少使用的Item失效。 MemoryCache是​​.net 4中的一個類,之后是在堆內存中實現緩存的一種方法。 可以根據緩存的介質以不同的方式對緩存進行分類,您可以將其緩存在硬盤驅動器或內存中,也可以根據內存的位置將其分類為內存中(堆內存中)和內存外(a內存在堆之外(例如在另一台服務器上)。 c#中的MemoryCaching使用內存,因此您必須小心,因為它會占用應用程序的所有內存。 因此,如果您有多個節點,最好不要使用它。

您還必須考慮的另一件事是,當您在外存儲器中緩存對象時,該對象應該可序列化。 但是內存中緩存可以緩存任何對象而無需序列化。

當高速緩存已滿並且需要添加一個值時,最近最少使用(LRU)會淘汰最少使用的鍵值。 而MemoryCache會將最舊的鍵值逐出,如果它們碰巧有一個,則將其移出“按日期使用”。

假設您添加的第一個鍵值至關重要,並且您始終無時無刻不在讀取,那么可以將其保留在LRU緩存中,但是在memoryCache中,它最終會消失並且需要替換。 有時候,盡管舊鍵值消失了,您卻需要這樣做,所以最新值會從后端(例如數據庫)中獲取。

還應考慮添加現有鍵值是否應被視為“已使用”(因此,最近更新的內容往往會存在)或僅當您讀取鍵值時才使用“已使用”,因此您只喜歡自己喜歡的東西讀者喜歡。 與往常一樣,如果您有多個任務或線程正在使用並發,我會考慮並發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM