天天看点

ASP.NET Core中构造全局静态IMemoryCache

   public void ConfigureServices(IServiceCollection services)
        {
            services.AddMemoryCache();

      } 

  public class MemoryCacheHelper
    {
        public static readonly IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions
        {
        });
        public static IMemoryCache Cache
        {
            get
            {
                return memoryCache;
            }
        }



        /// <summary>
        /// 删除所有缓存
        /// </summary>
        public static void RemoveCacheAll()
        {
            var keys = GetCacheKeys();
            foreach (var key in keys)
            {
                Cache.Remove(key);
            }
        }


        /// <summary>
        /// 获取所有缓存键
        /// </summary>
        /// <returns></returns>
        public static List<string> GetCacheKeys()
        {
            const BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
            var entries = Cache.GetType().GetField("_entries", flags).GetValue(Cache);
            var cacheItems = entries as IDictionary;
            var keys = new List<string>();
            if (cacheItems == null) return keys;
            foreach (DictionaryEntry cacheItem in cacheItems)
            {
                keys.Add(cacheItem.Key.ToString());
            }
            return keys;
        }
    }
           

参考:https://docs.microsoft.com/zh-CN/aspnet/core/performance/caching/memory?view=aspnetcore-3.1

使用示例:

需引用包: Microsoft.Extensions.Caching.Abstractions

命名空间:using Microsoft.Extensions.Caching.Memory;

   MemoryCacheHelper.Cache.Remove("key");

   MemoryCacheHelper.Cache.Set("key", 123);

继续阅读