2013-01-07 78 views

回答

2

本部分適用於Windows Azure的緩存

的Windows Azure提供了兩種類型的緩存模式:

  • 專用角色緩存 - 角色實例只用於 緩存(有沒有其他代碼在該實例中運行)。
  • 位於同一位置的角色緩存 - 緩存與應用程序共享虛擬機資源 (帶寬,CPU和內存)。

如何知道緩存中有什麼?有沒有像「GetAllKeys()」方法?

您是否需要這些信息爲您的報告/審計更多的應用? 我認爲,微軟並沒有提供這種方法,原因很簡單:它返回的信息可能會在不久後過時。請參閱緩存項目可能隨時過期(取決於將項目添加到緩存的過期時間和時間),因此您將從GetAllKeys()方法收到的信息可能無效秒或甚至毫秒後。

高速緩存使用標準模式將

  • 通過鑰匙
  • 獲取從緩存中的項目如果緩存返回Null然後創建一個項目,並把/添加到緩存中
  • 對項目執行操作(無論是從緩存中獲取或重新創建)

同位角色緩存

是否有可能clearAll()?

我不認爲你應該擔心清除緩存。如果您將緩存逐出策略設置爲LRU(Last Recently Used),那麼最近最少使用的項目將首先被丟棄。所以你永遠不會得到任何像「緩存中沒有空間」。

爲什麼我不能使用regoins?

你可以,但只能用高速緩存定位在相同的實例。專用角色緩存不支持它。


此部分適用於Windows Azure的共享緩存

Windows Azure的共享高速緩存是從視圖客戶端點非常相似到Windows Azure緩存(如上所述)和所有的解釋適用於共享緩存也。

物品驅逐有一個小的變化: 在共享緩存中,沒有特定到期時間的物品將在48小時之後過期。但是,您可以添加項目到緩存(通過的AddPut方法的各種重載)有明確的到期時間,如X分鐘或Y天。

如果您超出緩存的大小(高速緩存大小您創建時選擇),緩存服務將啓動「逐出項目」在緩存中,直到內存問題得到解決(你有足夠的內存來添加新的緩存項目)。在「驅逐」 LRU機制用於 - 在緩存中最近最少使用的項目被刪除。

獲取,檢查並重新創建處理緩存項目的方法(上述)也適用於共享緩存。

我希望這將有助於你更好地理解Azure的緩存和共享緩存。

+0

非常感謝你! – socksocket

+1

非常歡迎。我忘記補充的一件事是Windows Azure發展非常迅速,在接下來的幾個月裏你可以有很多改進。 – Tom

+1

問題是關於Windows Azure共享緩存。你在這裏描述的是Windows Azure緩存。 –

2

以下方法清除高速緩存中的所有數據。

public static void InvalidateCache(string cacheName) 
{ 
    DataCache desiredCache = new DataCache(cacheName); 
    foreach (string regionName in desiredCache.GetSystemRegions()) 
    { 
     desiredCache.ClearRegion(regionName); 
    } 
}