3

.NETキャッシングの使用に関して可能な限り多くの情報を取得することで遊んでいます。

オブジェクトを使用して、Cache3つのパラメータを取得できます

  • Count
  • EffectivePercentagePhysicalMemoryLimit
  • EffectivePrivateBytesLimit

しかし、残りはどうですか?

「サーバーで使用可能なメモリ」、「使用済みキャッシュメモリ」などの情報はどこで入手できますか...

ASP Allienceにはキャッシュマネージャーと呼ばれる古いプロジェクトがありましたが、現在は利用できず、私が見つけたのはその画像だけで、正確に次のように表示されます。

ここに画像の説明を入力してください

私はドキュメントを見て、PhysicalMemoryLimitSystem.Runtime.Cacheなどの新しい.NET 4エントリについて読んでいましたが、それをどのように使用するかについての実際の例を見つけることができません...CacheMemoryLimit

キャッシュ情報のラッパーを持っている人はいますか?または利用可能なこの新しい方法を使用する方法のアイデアはありますか?

私の現在のキャッシュ実装は次のとおりです。

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;
    }
}
4

1 に答える 1

0

これを見てください: https://www.youtube.com/watch?v=Dz_7hukyejQ

これは、サイズが 256 mb の byte[] セグメントでキャッシュされた項目をストローする、100% 管理されたカスタム メモリ マネージャーに基づいています。これにより、バイト [] に存在する「オブジェクト」を 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

メモリ制限とエントリの優先度を使用して、名前付きテーブル、年齢ベースまたは絶対タイムスタンプの有効期限を持つことができます

于 2015-06-02T00:20:37.667 に答える