Asp.net-Core-Mvc

記憶體記憶體中的 Dotnet Core - 預設到期時間是什麼

  • October 5, 2018

我在 dotnet core C# 項目中使用 MemoryCache。我正在使用它儲存我從集合中讀取的列舉列表(我想儲存它,因為它使用反射來載入需要時間的列舉)。

但是,由於我的收藏不會改變,我根本不希望它過期。我怎麼做?如果我沒有設置任何過期時間(SlidingExpiration 或 Absolute Expiration),我的記憶體是否永遠不會過期?

如果您未指定絕對和/或滑動到期,則該項目理論上將無限期地保持記憶體。實際上,持久性取決於兩個因素:

  1. 記憶體壓力。如果系統資源受限,並且正在執行的應用程序需要額外的記憶體,則可以從記憶體中刪除記憶體的項目以釋放 RAM。但是,您可以通過將條目的記憶體優先級設置為 來禁用此功能CacheItemPriority.NeverRemove
  2. 記憶體記憶體是程序綁定的。這意味著如果您重新啟動伺服器或您的應用程序由於任何原因重新啟動,儲存在記憶體記憶體中的任何內容都會消失。此外,這意味著在 Web 農場場景中,您的應用程序的每個實例都將擁有自己的記憶體記憶體,因為每個實例都是一個單獨的程序(即使您只是在同一台伺服器上執行多個實例)。

如果您只關心真正執行一次操作,並在應用程序關閉後保存結果,甚至跨應用程序的多個實例,您需要使用分佈式記憶體和 SQL Server 或 Redis 等備份儲存。

引用自:https://stackoverflow.com/questions/52666814