Asp.net Core 使用 In Memory Caching

Cache 主要目的就是為了減少資料庫存取,加快應用程式速度

但系統的架構設計是,必須要測試是否資料存在 in memory cache,否則就要跟底層的資料庫取得,因為 in memory cache 不保證資料的存在期(也就是他有可能會消失)。

此外,如果是 web farm (代表有多個 web server)就必須要使用 分散式 Cached 機制,確保每台都可以讀取。

 

使用方式:

加入 package 連結:

"Microsoft.Extensions.Caching.Memory":
"1.0.0-rc2-final",

因為 Cache 是一種 Service,因此要透過 DI 加入:

接下來就可以使用 Constructor injection 呼叫:

Cache 使用方式很簡單,用 Get 取出資料(無 = null),或者用 TryGet 使用 out 取出資料,會回傳 true/false。

用 set 設定資料,並且可以用  MemoryCacheEntryOptions 指定 cache 的有效期間;範例如下:

請注意:預設 MemoryCache 會自動調整 Cache 內容,如果記憶體過大,會自動移除部份內容。可以使用 CacheItemPriority.NeverRemove 讓它不要移除:

如果要移除,就用以下命令:

cache.Remove(cacheKey);

其他內容包含:CancellationTokenSource、Cache Dependencies and
Callbacks
主要用途為控制跟後端資料提供者同步,因使用機會不大,若有需要請自行參考。

 

有問題嗎?歡迎一起討論喔!