1. 程式人生 > >手把手教你AspNetCore WebApi:快取(MemoryCache和Redis)

手把手教你AspNetCore WebApi:快取(MemoryCache和Redis)

# 前言 這幾天小明又有煩惱了,系統上線一段時間後,系統性能出現了問題,馬老闆很生氣,叫小明一定要解決這個問題。效能問題一般用什麼來解決呢?小明第一時間想到了快取。 # 什麼是快取 快取是實際工作中非常常用的一種提高效能的方法。 快取可以減少生成內容所需的工作,從而顯著提高應用程式的效能和可伸縮性。 快取最適用於不經常更改的資料。 通過快取,可以比從原始資料來源返回的資料的副本速度快得多。 # 使用記憶體快取(MemoryCache) **首先**,我們簡單的建立一個控制器,實現一個簡單方法,返回當前時間。我們可以看到每次訪問這個介面,都可以看到當前時間。 ``` [Route("api/[controller]")] [ApiController] public class CacheController : ControllerBase { [HttpGet] public string Get() { return DateTime.Now.ToString(); } } ``` **接下來**,安裝Microsoft.Extensions.Caching.Memory包 - 右鍵單擊“解決方案資源管理器” > “管理 NuGet 包”中的專案 - 將“包源”設定為“nuget.org” - 確保啟用“包括預發行版”選項 - 在搜尋框中輸入“Microsoft.Extensions.Caching.Memory” - 從“瀏覽”選項卡中選擇最新的“Microsoft.Extensions.Caching.Memory”包,然後單擊“安裝” **接下來**,使用依賴關係注入從應用中引用的服務,在Startup類的ConfigureServices()方法中配置: ``` public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); } ``` **接下來**,在建構函式中請求IMemoryCache例項 ``` private IMemoryCache cache; public CacheController(IMemoryCache cache) { this.cache = cache ?? throw new ArgumentNullException(nameof(cache)); } ``` **接下來**,在Get方法中使用快取 ``` [HttpGet] public string Get() { //讀取快取 var now = c