获取使用 MemoryCache 类 c# 缓存的所有缓存对象

Posted

技术标签:

【中文标题】获取使用 MemoryCache 类 c# 缓存的所有缓存对象【英文标题】:Get all Cached Objects which are cached using MemoryCache class c# 【发布时间】:2015-09-03 03:41:04 【问题描述】:

我想检索使用 MemoryCache 添加的所有缓存对象。

我尝试了以下方法,但没有检索到它们

System.Web.HttpContext.Current.Cache.GetEnumerator();
System.Web.HttpRuntime.Cache.GetEnumerator();

注意: 检索所有内容不仅仅是我知道和创建的,我指的是在应用程序中创建的每个缓存对象。

【问题讨论】:

我对你最近的编辑有点困惑。如果这回答了问题,那么这确实应该作为答案添加,而不是编辑到问题中。我很欣赏 rene 告诉您将其编辑到问题中,但我怀疑他没有意识到这是一个答案。很抱歉,您收到的信息不一! :) 【参考方案1】:

这是我发现的(它可能对某些人有所帮助)

foreach (var item in MemoryCache.Default)

   //add the item.keys to list

return list;

【讨论】:

【参考方案2】:

这里有一个更好的枚举和获取结果的方法:

public virtual List<T> GetCache<T>()

    List<T> list = new List<T>();
    IDictionaryEnumerator cacheEnumerator = (IDictionaryEnumerator)((IEnumerable)Cache).GetEnumerator();

    while (cacheEnumerator.MoveNext())
        list.Add((T) cacheEnumerator.Value);

    return list;

【讨论】:

【参考方案3】:

这也应该有效:MemoryCache.Default.ToList();

【讨论】:

以上是关于获取使用 MemoryCache 类 c# 缓存的所有缓存对象的主要内容,如果未能解决你的问题,请参考以下文章

MemoryCache 如何清除全部缓存?

缓存处理类(MemoryCache结合文件缓存)

C#中缓存的使用

停止 MemoryCache 调用的重入

如何清除内存缓存?

[爬虫学习笔记]MemoryCache缓存的用法学习