C#之快取

yinghualeihenmei發表於2024-07-01

原文連結:https://zhuanlan.zhihu.com/p/657458522

快取指在中間層中儲存資料的行為,該行為可使後續資料檢索更快。 從概念上講,快取是一種效能最佳化策略和設計考慮因素。 快取可以顯著提高應用效能,方法是提高不常更改(或檢索成本高)的資料的就緒性

既然快取是是一種效能最佳化策略,那麼就得考慮一下用在什麼地方了。

我們先順一下一般情況,我們是如何獲取到資料的

UI展示層-->業務層-->資料庫層-->然後執行SQL,從資料庫獲取資料-->返回到業務層-->返回到UI,進行展示

好了..這個時候,有一個場景,登入一個系統的時候,使用者資料是不是基本上不會變化的... 你登入到系統裡面,選單是不是分配完成之後,也是基本上不會變化的

那麼,每次登入我們都要去資料庫查詢一次 重新整理頁面也需要去資料庫從新載入選單,如果這個時候 你一分鐘重新整理60下...這酸爽..想想就很刺激

那麼這個時候....引用這個效能最佳化策略 是什麼情況呢? 我們把使用者資料 或者 選單資料 放到快取裡面...當我們需要這一部分的資料的時候 從快取中拿 直接返回給前端 這樣 資料庫壓力減小了...響應也變快了 效能就上來了

用上快取之後 我們在順一下請求情況

UI展示層-->業務層-->資料庫層-->然後執行SQL,從資料庫獲取資料--->加入快取->返回到業務層-->返回到UI,進行展示

我們加了一個快取 第一次我們去資料庫拿資料 拿到之後 放入快取 然後返回展示層 這個時候 我們還需要就先去快取裡面查檢視有沒有這個快取 有就直接返回了

如下圖:

按照當前的業務形式 還有一個形式就是熱點快取...比較熱門的資料 還可以在加一層快取 就是快取的快取 當然這個還是需要看具體的業務

目前 經常使用的快取有兩種 一個是微軟的Cache

  • System.Runtime.Caching.MemoryCache
  • Microsoft.Extensions.Caching.Memory.MemoryCache

還有一個是redis 很熱門的一個記憶體資料庫

使用上都差不多 根據Key進行查詢和儲存 redis支援資料型別比較多 也支援持久化 具體可以看看其他相關資料

微軟的呢就比較人性了...簡單好用,雙手奉上鍊接

https://learn.microsoft.com/zh-cn/dotnet/core/extensions/caching

相關文章