3

WindowsAzure共有キャッシュを使用しています。私はいくつかの問題に遭遇しました:

  1. キャッシュに存在するキーを知る方法は?方法のようなものはありGetAllKeys()ますか?
  2. 電話することはできますclearAll()か?
  3. リージョンを使用できないのはなぜですか?

ありがとう。

4

2 に答える 2

2

このセクションは、 WindowsAzureキャッシングに適用されます

Windows Azureには、次の2種類のキャッシュモードがあります。

  • 専用のロールキャッシング-ロールインスタンスはキャッシング専用に使用されます(そのインスタンスで実行されている他のコードはありません)。
  • 同じ場所に配置されたロールキャッシング-キャッシュはVMリソース(帯域幅、CPU、およびメモリ)をアプリケーションと共有します。

キャッシュに何があるかを知る方法は?「GetAllKeys()」メソッドのようなものはありますか?

レポート/監査のためのより多くのアプリケーションのためにその情報が必要ですか?マイクロソフトがその方法を提供しなかったのには、1つの理由があります。それは、返された情報がすぐに廃止される可能性があるということです。キャッシュアイテムはいつでも期限切れになる可能性があるため(有効期限とキャッシュにアイテムを追加する時間によって異なります)、 GetAllKeys()メソッドから受け取る情報は数秒または数ミリ秒後に無効になる可能性があります。

キャッシュ使用量の標準パターンは

  • キーでキャッシュからアイテムを取得する
  • キャッシュが戻った場合Nullは、そのアイテムを作成し、キャッシュに追加/追加します
  • アイテムに対して操作を実行します(キャッシュから取得または再作成されます)

同じ場所に配置されたロールキャッシング

clearAll()は可能ですか?

キャッシュの削除について心配する必要はないと思います。キャッシュエビクションポリシーをLRU(最近使用されたもの)に設定すると、最も使用頻度の低いアイテムが最初に破棄されます。したがって、「キャッシュにスペースがありません」のようなものは決して得られません。

なぜレゴインを使用できないのですか?

同じインスタンスでキャッシュロケートを使用する場合にのみ可能です。専用ロールキャッシングはそれをサポートしていません。


このセクションは、 WindowsAzure共有キャッシュに適用されます

Windows Azure共有キャッシングは、クライアント側の観点からはWindows Azureキャッシング(上記)と非常によく似ており、すべての説明は共有キャッシングにも当てはまります。

アイテムの削除に小さな変更があります。共有キャッシングでは、特定の有効期限のないアイテムは48時間後に期限切れになります。ただし、 X分やY日などの明示的な有効期限を使用して、(Addおよびメソッドのさまざまなオーバーロードを介して)キャッシュにアイテムを追加できます。Put

キャッシュのサイズ(作成時に選択したキャッシュサイズ)を超えると、キャッシュサービスは、メモリの問題が解決されるまで(新しいキャッシュアイテムを追加するのに十分なメモリがある)、キャッシュ内の「アイテムの削除」を開始します。「エビクション」中にLRUメカニズムが使用されます-キャッシュ内で最も最近使用されていないアイテムが削除されます。

キャッシュアイテムを処理するための取得、チェック、および再作成のアプローチ(上記で説明)は、共有キャッシュでも機能します。

これが、Azureキャッシングと共有キャッシングの理解に役立つことを願っています。

于 2013-01-07T10:26:26.343 に答える
2

次の方法では、キャッシュ内のすべてのデータをクリアします。

public static void InvalidateCache(string cacheName)
{
    DataCache desiredCache = new DataCache(cacheName); 
    foreach (string regionName in desiredCache.GetSystemRegions()) 
    {
        desiredCache.ClearRegion(regionName);
    }
}
于 2013-05-24T15:25:27.063 に答える