zoukankan      html  css  js  c++  java
  • .net core cache使用

      整理下.net core cache的使用

    Nuget安装   Microsoft.Extensions.Caching.Memory

    using Microsoft.Extensions.Caching.Memory;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace WebApplication1
    {
        public class CacheHelperNetCore
        {
            public static IMemoryCache _memoryCache = new MemoryCache(new MemoryCacheOptions());
    
            /// <summary>
            /// 缓存绝对过期时间
            /// </summary>
            ///<param name="key">Cache键值</param>
            ///<param name="value">给Cache[key]赋的值</param>
            ///<param name="minute">minute分钟后绝对过期</param>
            public static void CacheInsertAddMinutes(string key, object value, int minute)
            {
                if (value == null) return;
                _memoryCache.Set(key, value, new MemoryCacheEntryOptions()
                        .SetAbsoluteExpiration(TimeSpan.FromMinutes(minute)));
            }
    
    
            /// <summary>
            /// 缓存相对过期,最后一次访问后minute分钟后过期
            /// </summary>
            ///<param name="key">Cache键值</param>
            ///<param name="value">给Cache[key]赋的值</param>
            ///<param name="minute">滑动过期分钟</param>
            public static void CacheInsertFromMinutes(string key, object value, int minute)
            {
                if (value == null) return;
                _memoryCache.Set(key, value, new MemoryCacheEntryOptions()
                        .SetSlidingExpiration(TimeSpan.FromMinutes(minute)));
            }
    
    
            /// <summary>
            ///以key键值,把value赋给Cache[key].如果不主动清空,会一直保存在内存中.
            /// </summary>
            ///<param name="key">Cache键值</param>
            ///<param name="value">给Cache[key]赋的值</param>
            public static void CacheInsert(string key, object value)
            {
                _memoryCache.Set(key, value);
            }
    
            /// <summary>
            ///清除Cache[key]的值
            /// </summary>
            ///<param name="key"></param>
            public static void CacheNull(string key)
            {
                _memoryCache.Remove(key);
            }
    
            /// <summary>
            ///根据key值,返回Cache[key]的值
            /// </summary>
            ///<param name="key"></param>
            public static object CacheValue(string key)
            {
                return _memoryCache.Get(key);
            }
    
            #region 缓存文档
            //public IActionResult Index()
            //{
            //    string cacheKey = "key";
            //    string result;
            //    if (!_memoryCache.TryGetValue(cacheKey, out result))
            //    {
            //        result = $"LineZero{DateTime.Now}";
            //        _memoryCache.Set(cacheKey, result);
            //        //设置相对过期时间2分钟
            //        _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
            //            .SetSlidingExpiration(TimeSpan.FromMinutes(2)));
            //        //设置绝对过期时间2分钟
            //        _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
            //            .SetAbsoluteExpiration(TimeSpan.FromMinutes(2)));
            //        //移除缓存
            //        _memoryCache.Remove(cacheKey);
            //        //缓存优先级 (程序压力大时,会根据优先级自动回收)
            //        _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
            //            .SetPriority(CacheItemPriority.NeverRemove));
            //        //缓存回调 10秒过期会回调
            //        _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
            //            .SetAbsoluteExpiration(TimeSpan.FromSeconds(10))
            //            .RegisterPostEvictionCallback((key, value, reason, substate) =>
            //            {
            //                Console.WriteLine($"键{key}值{value}改变,因为{reason}");
            //            }));
            //        //缓存回调 根据Token过期
            //        var cts = new CancellationTokenSource();
            //        _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
            //            .AddExpirationToken(new CancellationChangeToken(cts.Token))
            //            .RegisterPostEvictionCallback((key, value, reason, substate) =>
            //            {
            //                Console.WriteLine($"键{key}值{value}改变,因为{reason}");
            //            }));
            //        cts.Cancel();
            //    }
            //    ViewBag.Cache = result;
            //    return View();
            //}
            #endregion
        }
    }
    View Code

    测试

            public IActionResult Index()
            {
                //写入
                CacheHelperNetCore.CacheInsertAddMinutes("cache","123",10);
                //读取
               string value= CacheHelperNetCore.CacheValue("cache").ToString();
                //清除
                CacheHelperNetCore.CacheNull("cache");
                string value1 = CacheHelperNetCore.CacheValue("cache").ToString();
                return View();
            }
  • 相关阅读:
    log4j中Spring控制台输出Debug级信息过多解决方法
    spring使用aop
    过滤器(filter)实现用户登录拦截
    Eclipse将项目部署tomcat的webapps目录
    css初始化样例代码
    dede表单修改默认必填
    DedeCMS提交自定义表单加入验证码功能
    jQuery入门第三天
    jQuery入门第二天
    jQuery入门第一天
  • 原文地址:https://www.cnblogs.com/LiChen19951127/p/10478212.html
Copyright © 2011-2022 走看看