【发布时间】:2012-12-07 23:42:04
【问题描述】:
我正在尽可能多地检索有关 .NET 缓存使用的信息。
使用Cache 对象,我们可以检索 3 个参数
CountEffectivePercentagePhysicalMemoryLimitEffectivePrivateBytesLimit
但是其他的呢?
我在哪里可以获得诸如“服务器可用内存”、“已用缓存内存”等信息...
ASP Allience 中有一个名为 Cache Manager 的旧项目,但它不再可用,我只能找到它的图像,它确实显示如下:
我正在查看文档并阅读 System.Runtime.Cache 中的新 .NET 4 条目,例如 CacheMemoryLimit 和 PhysicalMemoryLimit,但我找不到有关如何使用它的真实示例...
有没有人有缓存信息的包装器?或者知道如何使用这种可用的新方法?
我目前的缓存实现是:
public class InMemoryCache : ICacheService
{
private int minutes = 15;
public T Get<T>(string cacheID, Func<T> getItemCallback) where T : class
{
T item = HttpRuntime.Cache.Get(cacheID) as T;
if (item == null)
{
item = getItemCallback();
HttpRuntime.Cache.Insert(
cacheID,
item,
null,
DateTime.Now.AddMinutes(minutes),
System.Web.Caching.Cache.NoSlidingExpiration);
}
return item;
}
public void Clear()
{
IDictionaryEnumerator enumerator = HttpRuntime.Cache.GetEnumerator();
while (enumerator.MoveNext())
HttpRuntime.Cache.Remove(enumerator.Key.ToString());
}
public Dictionary<string, string> Stats()
{
var cache = HttpRuntime.Cache;
var r = new Dictionary<string, string>();
r.Add("Count", cache.Count.ToString());
r.Add("EffectivePercentagePhysicalMemoryLimit", cache.EffectivePercentagePhysicalMemoryLimit.ToString());
r.Add("EffectivePrivateBytesLimit", cache.EffectivePrivateBytesLimit.ToString());
return r;
}
}
【问题讨论】: