千家信息网

ASP.NET Core中的Caching组件怎么用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本文小编为大家详细介绍"ASP.NET Core中的Caching组件怎么用",内容详细,步骤清晰,细节处理妥当,希望这篇"ASP.NET Core中的Caching组件怎么用"文章能帮助大家解决疑惑
千家信息网最后更新 2025年01月19日ASP.NET Core中的Caching组件怎么用

本文小编为大家详细介绍"ASP.NET Core中的Caching组件怎么用",内容详细,步骤清晰,细节处理妥当,希望这篇"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

读到这里,这篇"ASP.NET Core中的Caching组件怎么用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0