ASP.NET Core中的Caching组件简介

2022-04-18 19:15:44

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

MemoryRedisSQLSever

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);                //设置相JQYhaMuY对过期时间                memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()                    .SetSlidingExpiration(TimeSpan.FromSeconds(10)));                //设置绝对过期时间                memoryCache.Set(cacheKey, result, newww.easck.comw 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 Hel易采站长站per,它是依赖于MemoryCache组件的。

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

@{    ViewData["Title"] = "Home Page";}<distributed-cache name="mycache" expires-after="TimeSpan.FromSeconds(10)">    <p>缓存项10秒过期(expires-after绝对过期时间)</p></distributed-cache><distributed-cache name="mycachenew" expires-sliding="TimeSpan.FromSeconds(10)">    <p>相对十秒(expires-sliding相对过期时间)</p>    @DateTime.Now</distributed-cache><div>@ViewBag.Cache</div>

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