ASP.NET?Core中的Caching組件簡介
在.NET Core中提供了Caching的組件。目前Caching組件提供了三種存儲(chǔ)方式:
- Memory
- Redis
- SQLSever
1.Memeor Caching
新建一個(gè)ASP.NET Core Web應(yīng)用程序項(xiàng)目,然后安裝 Microsoft.Extensions.Caching.Memory。
修改ConfigureServices方法
services.AddMemoryCache(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
在HomeController使用:
private IMemoryCache memoryCache; public HomeController( IMemoryCache _memoryCache) { memoryCache = _memoryCache; } public IActionResult Index() { string cacheKey = "key"; string result; if (!memoryCache.TryGetValue(cacheKey, out result)) { result = $"LineZero{DateTime.Now}"; memoryCache.Set(cacheKey, result); //設(shè)置相對過期時(shí)間 memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromSeconds(10))); //設(shè)置絕對過期時(shí)間 memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromSeconds(10))); //刪除緩存 memoryCache.Remove(cacheKey); //設(shè)置緩存優(yōu)先級(程序壓力大時(shí),會(huì)根據(jù)優(yōu)先級自動(dòng)回收) memoryCache.Set(cacheKey,result,new MemoryCacheEntryOptions() .SetPriority(CacheItemPriority.NeverRemove)); //過期時(shí)緩存回調(diào) memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromSeconds(60)) .RegisterPostEvictionCallback((key, value, reason, substate) => { nlog.Warn($"鍵{key}值{value}改變,因?yàn)閧reason}"); })); //Token過期時(shí),緩存回調(diào) var cts = new CancellationTokenSource(); memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .AddExpirationToken(new CancellationChangeToken(cts.Token)) .RegisterPostEvictionCallback((key, value, reason, substate) => { nlog.Warn($"鍵{key}值{value}改變,因?yàn)閧reason}"); })); } ViewBag.Cache = result; return View(); }
2.Distributed Cache Tag Helper
在ASP.NET Core MVC 中有一個(gè) Distributed Cache Tag Helper,它是依賴于MemoryCache組件的。
可以直接在試圖上增加 distributed-cache 標(biāo)簽
@{ ViewData["Title"] = "Home Page"; } <distributed-cache name="mycache" expires-after="TimeSpan.FromSeconds(10)"> <p>緩存項(xiàng)10秒過期(expires-after絕對過期時(shí)間)</p> </distributed-cache> <distributed-cache name="mycachenew" expires-sliding="TimeSpan.FromSeconds(10)"> <p>相對十秒(expires-sliding相對過期時(shí)間)</p> @DateTime.Now </distributed-cache> <div>@ViewBag.Cache</div>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用.NET升級助手將.NET?Framework項(xiàng)目升級為.NET?6
這篇文章介紹了使用.NET升級助手將.NET?Framework項(xiàng)目升級為.NET?6的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04ASP.NET在上傳文件時(shí)對文件類型的高級判斷的代碼
在上傳文件過程中,可以通過修改擴(kuò)展名來逃過文件類型的判斷并實(shí)現(xiàn)上傳,就需要可以驗(yàn)證究竟是什么文件。下面的代碼大家可以測試下。2009-12-12使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析
使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析...2007-09-09asp.net中ListBox 綁定多個(gè)選項(xiàng)為選中及刪除實(shí)現(xiàn)方法
文章介紹了關(guān)于在asp.net中的listbox的綁定多個(gè)選項(xiàng)和同時(shí)選中多個(gè)選項(xiàng)以及刪除多個(gè)選項(xiàng)的方法2012-04-04ASP.NET?Core中MVC模式實(shí)現(xiàn)路由一
這篇文章介紹了ASP.NET?Core中MVC模式實(shí)現(xiàn)路由的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04asp.net錯(cuò)誤處理Application_Error事件示例
Application_Error事件與Page_Error事件相類似,可使用他捕獲發(fā)生在應(yīng)用程序中的錯(cuò)誤。由于事件發(fā)生在整個(gè)應(yīng)用程序范圍內(nèi),因此您可記錄應(yīng)用程序的錯(cuò)誤信息或處理其他可能發(fā)生的應(yīng)用程序級別的錯(cuò)誤2014-01-01asp.net中使用 Repeater控件拖拽實(shí)現(xiàn)排序并同步數(shù)據(jù)庫字段排序
這篇文章主要介紹了asp.net中使用 Repeater控件拖拽實(shí)現(xiàn)排序并同步數(shù)據(jù)庫字段排序的相關(guān)資料,需要的朋友可以參考下2015-12-12配置Visual Studio 以調(diào)試.net framework源代碼
看到.net框架代碼發(fā)布了,興奮了一下,把在Visual Studio 2008上配置的內(nèi)容翻譯了一下,只翻譯了原文的基本步驟,高級用戶篇和QA沒有翻譯。2009-04-04Entity?Framework使用DataBase?First模式實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查
本文詳細(xì)講解了Entity?Framework使用DataBase?First模式實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03