.NET Core支持多種不同的緩存,其中包括MemoryCache,它表示存儲在Web伺服器記憶體中的緩存; 記憶體中的緩存存儲任何對象; 分散式緩存界面僅限於byte[] 1:在.net core中使用MemoryCache首先要下載MemoryCache包 在程式包管理器控制台輸入命令:Insta ...
.NET Core支持多種不同的緩存,其中包括MemoryCache,它表示存儲在Web伺服器記憶體中的緩存;
記憶體中的緩存存儲任何對象; 分散式緩存界面僅限於byte[]
1:在.net core中使用MemoryCache首先要下載MemoryCache包
在程式包管理器控制台輸入命令:Install-Package Microsoft.Extensions.Caching.Memory
之後可以看到已經下載好了NuGet包“Microsoft.Extensions.Caching.Memory”
使用IMemoryCache:記憶體中緩存是使用依賴註入從應用程式引用的服務,在Startup.cs中
public void ConfigureServices(IServiceCollection services) { //使用依賴註入從應用程式引用服務 services.AddMemoryCache(); services.AddMvc(); }
IMemoryCache在構造函數中請求實例:
//IMemoryCache在構造函數中請求實例 private IMemoryCache _cache; // private object CacheKeys; public HomeController(IMemoryCache memoryCache) { _cache = memoryCache; } public IActionResult Index() { DateTime cacheEntry; string CacheKeys = "key"; // 使用TryGetValue來檢測時間是否在緩存中 if (!_cache.TryGetValue(CacheKeys, out cacheEntry)) { //時間未被緩存,添加一個新條目 cacheEntry = DateTime.Now; // 使用Set將其添加到緩存中 var cacheEntryOptions = new MemoryCacheEntryOptions() // 在此期間保持高速緩存,如果被訪問,則重新設置時間 .SetSlidingExpiration(TimeSpan.FromSeconds(3)); _cache.Set(cacheEntry, cacheEntry, cacheEntryOptions); } return View("Index", cacheEntry); }
顯示當前時間:緩存的DateTime
值保留在高速緩存中,同時在超時期限內有請求(並且不因記憶體壓力而驅逐)
@model DateTime? <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css"> <link rel="stylesheet" href="~/lib/font-awesome/css/font-awesome.css"> <div> <h2>Actions</h2> <ul> <li><a asp-controller="Home" asp-action="CacheTryGetValueSet">TryGetValue and Set</a></li> </ul> </div> <h3>Current Time: @DateTime.Now.TimeOfDay.ToString()</h3> <h3>Cached Time: @(Model == null ? "No cached entry found" : Model.Value.TimeOfDay.ToString())</h3>
緩存的DateTime
值保留在高速緩存中,同時在超時期限內有請求(並且不因記憶體壓力而驅逐)。下圖顯示了從緩存中檢索的當前時間和較早的時間: