zoukankan      html  css  js  c++  java
  • 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";
    }
    <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>

      

  • 相关阅读:
    安全学习工具和研究途径整理分享
    白帽黑客:如何用总裁的座机给你打的电话!
    渗透某公众号思路分享
    Exploit之初识Linux下缓冲区溢出
    应用密码学之从零开始③-密码学的数学基础其一
    关于finecms v5 会员头像 任意文件上传漏洞分析
    日志分析与splunk浅谈
    mbed试玩—高速开发MCU应用(基于FRDM-KL25Z)
    在DevExpress GridControl的一列中显示图片
    【BLE】CC2541之自己定义长短按键
  • 原文地址:https://www.cnblogs.com/afei-24/p/11000367.html
Copyright © 2011-2022 走看看