[C#] 關於MemoryCache GetOrCreate 遇到 thread-safe 的問題
2023-02-04
同事 Roger 碰到一個小雷,跟我說過後,決定記錄一下
因為一些專案的緣故,開發環境是 ASP.NET Core 6 他使用的
Microsoft.Extensions.Caching.Memory.MemoryCache
但是在大量用戶存取(非同步) 的時候造成 Exception
後來其實 Roger 也找到解法了也提供了我我測試一下後就記錄一下
測試,其實你發現在大量非同步執行的時候也就是用戶同步存取的時候會出現錯誤
這也可以很簡單的重現,理論上 GetOrCreate 不應該發生 Create 的動作
之後改用一個套件 LazyCache 來解決這問題
結果我就寫在註解了
感謝各位開源大大的幫忙
reference:
https://github.com/alastairtree/LazyCache
https://blog.novanet.no/asp-net-core-memory-cache-is-get-or-create-thread-safe/