我可以找到一种remove
方法来IMemoryCache
从其键中删除对象.有没有办法重置整个缓存并删除所有对象?
编辑:
如何清除MemoryCache?
链接中提供的Dispose方法在asp.net 5中给出了一个例外.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Microsoft.Extensions.Caching.Memory.MemoryCache'.
我正在使用提供的缓存System.Runtime.Caching.MemoryCache
.
我想枚举缓存的项目,以便我可以无效(逐出然后重新加载)项目
foreach (var item in MemoryCache.Default) { item.invalidate() }
Run Code Online (Sandbox Code Playgroud)
但这里发现的官方文件说:
!重要:检索MemoryCache实例的枚举器是一项资源密集型和阻塞操作.因此,不应在生产应用程序中使用枚举器.
当然必须有一种简单有效的方法来迭代缓存的项目?
IMemoryCache中没有可用的方法允许迭代每个缓存的项目.我的项目很小,我不想使用像Redis这样的其他选项.
namepsace Microsoft.Extensions.Caching.Memory{
public static class CacheExtensions
{
public static object Get(this IMemoryCache cache, object key);
public static TItem Get<TItem>(this IMemoryCache cache, object key);
public static TItem GetOrCreate<TItem>(this IMemoryCache cache, object key, Func<ICacheEntry, TItem> factory);
[AsyncStateMachine(typeof(CacheExtensions.<GetOrCreateAsync>d__9<>))]
public static Task<TItem> GetOrCreateAsync<TItem>(this IMemoryCache cache, object key, Func<ICacheEntry, Task<TItem>> factory);
public static TItem Set<TItem>(this IMemoryCache cache, object key, TItem value);
public static TItem Set<TItem>(this IMemoryCache cache, object key, TItem value, DateTimeOffset absoluteExpiration);
public static TItem Set<TItem>(this IMemoryCache cache, object key, TItem value, TimeSpan …
Run Code Online (Sandbox Code Playgroud)