ASP.NET?Core中的Caching組件簡(jiǎn)介
在.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è)置相對(duì)過(guò)期時(shí)間
memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromSeconds(10)));
//設(shè)置絕對(duì)過(guò)期時(shí)間
memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromSeconds(10)));
//刪除緩存
memoryCache.Remove(cacheKey);
//設(shè)置緩存優(yōu)先級(jí)(程序壓力大時(shí),會(huì)根據(jù)優(yōu)先級(jí)自動(dòng)回收)
memoryCache.Set(cacheKey,result,new MemoryCacheEntryOptions()
.SetPriority(CacheItemPriority.NeverRemove));
//過(guò)期時(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過(guò)期時(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秒過(guò)期(expires-after絕對(duì)過(guò)期時(shí)間)</p>
</distributed-cache>
<distributed-cache name="mycachenew" expires-sliding="TimeSpan.FromSeconds(10)">
<p>相對(duì)十秒(expires-sliding相對(duì)過(guò)期時(shí)間)</p>
@DateTime.Now
</distributed-cache>
<div>@ViewBag.Cache</div>以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用.NET升級(jí)助手將.NET?Framework項(xiàng)目升級(jí)為.NET?6
這篇文章介紹了使用.NET升級(jí)助手將.NET?Framework項(xiàng)目升級(jí)為.NET?6的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
ASP.NET在上傳文件時(shí)對(duì)文件類(lèi)型的高級(jí)判斷的代碼
在上傳文件過(guò)程中,可以通過(guò)修改擴(kuò)展名來(lái)逃過(guò)文件類(lèi)型的判斷并實(shí)現(xiàn)上傳,就需要可以驗(yàn)證究竟是什么文件。下面的代碼大家可以測(cè)試下。2009-12-12
使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析
使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析...2007-09-09
asp.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-04
ASP.NET?Core中MVC模式實(shí)現(xiàn)路由一
這篇文章介紹了ASP.NET?Core中MVC模式實(shí)現(xiàn)路由的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
asp.net錯(cuò)誤處理Application_Error事件示例
Application_Error事件與Page_Error事件相類(lèi)似,可使用他捕獲發(fā)生在應(yīng)用程序中的錯(cuò)誤。由于事件發(fā)生在整個(gè)應(yīng)用程序范圍內(nèi),因此您可記錄應(yīng)用程序的錯(cuò)誤信息或處理其他可能發(fā)生的應(yīng)用程序級(jí)別的錯(cuò)誤2014-01-01
asp.net中使用 Repeater控件拖拽實(shí)現(xiàn)排序并同步數(shù)據(jù)庫(kù)字段排序
這篇文章主要介紹了asp.net中使用 Repeater控件拖拽實(shí)現(xiàn)排序并同步數(shù)據(jù)庫(kù)字段排序的相關(guān)資料,需要的朋友可以參考下2015-12-12
配置Visual Studio 以調(diào)試.net framework源代碼
看到.net框架代碼發(fā)布了,興奮了一下,把在Visual Studio 2008上配置的內(nèi)容翻譯了一下,只翻譯了原文的基本步驟,高級(jí)用戶篇和QA沒(méi)有翻譯。2009-04-04
Entity?Framework使用DataBase?First模式實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查
本文詳細(xì)講解了Entity?Framework使用DataBase?First模式實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

