2012-12-20 24 views
3

我正在玩弄有關使用.NET緩存的大部分信息。從.NET緩存獲取大部分信息

隨着Cache對象,我們可以獲取3個參數

  • Count
  • EffectivePercentagePhysicalMemoryLimit
  • EffectivePrivateBytesLimit

但所有其餘的怎麼樣?

我在哪裏可以得到信息,諸如「在服務器可用內存」,「使用高速緩存存儲器」,等等...

有一個老項目ASP Allience稱爲緩存管理器,但它沒有不再可用,所有我能找到的是它的一個形象,如果它確實顯示正是這一點:

enter image description here

我一直在尋找在文檔和閱讀有關新的.NET 4項在System.Runtime.CacheCacheMemoryLimit一個d 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; 
    } 
} 

回答

0

看看這個: https://www.youtube.com/watch?v=Dz_7hukyejQ

這是基於100%的管理自定義的內存管理器,stroes緩存中的byte []段的項目,像256 MB一樣大小。這允許存儲數以百萬計的對象,而不會減慢任何事情,因爲GC在字節[]中沒有看到「對象」。

錄像顯示,如何能夠在行動中看到緩存,看看

這裏多少對象,網頁,優先級等..是代碼:

https://github.com/aumcode/nfx/tree/master/Source/NFX/ApplicationModel/Pile

即主界面緩存:

https://github.com/aumcode/nfx/blob/master/Source/NFX/ApplicationModel/Pile/ICache.cs

您可以命名錶,基於年齡和絕對時間EXP帶有內存限制和條目優先權的合作