您现在的位置是:网站首页> 编程资料编程资料

ASP.NET Core中的Caching组件简介_实用技巧_

2023-05-24 408人已围观

简介 ASP.NET Core中的Caching组件简介_实用技巧_

在.NET Core中提供了Caching的组件。目前Caching组件提供了三种存储方式:

  • Memory
  • Redis
  • SQLSever

1.Memeor Caching

新建一个ASP.NET Core Web应用程序项目,然后安装 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); //设置相对过期时间 memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromSeconds(10))); //设置绝对过期时间 memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromSeconds(10))); //删除缓存 memoryCache.Remove(cacheKey); //设置缓存优先级(程序压力大时,会根据优先级自动回收) memoryCache.Set(cacheKey,result,new MemoryCacheEntryOptions() .SetPriority(CacheItemPriority.NeverRemove)); //过期时缓存回调 memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromSeconds(60)) .RegisterPostEvictionCallback((key, value, reason, substate) => { nlog.Warn($"键{key}值{value}改变,因为{reason}"); })); //Token过期时,缓存回调 var cts = new CancellationTokenSource(); memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions() .AddExpirationToken(new CancellationChangeToken(cts.Token)) .RegisterPostEvictionCallback((key, value, reason, substate) => { nlog.Warn($"键{key}值{value}改变,因为{reason}"); })); } ViewBag.Cache = result; return View(); }

2.Distributed Cache Tag Helper

在ASP.NET Core MVC 中有一个 Distributed Cache Tag Helper,它是依赖于MemoryCache组件的。

可以直接在试图上增加 distributed-cache 标签

@{ ViewData["Title"] = "Home Page"; } 

缓存项10秒过期(expires-after绝对过期时间)

相对十秒(expires-sliding相对过期时间)

@DateTime.Now
@ViewBag.Cache

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

-六神源码网