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);