本頁是否能提供幫助?
您對此內容的意見反應十分重要。 請告訴我們您的想法。
其他意見反應?
剩餘 1500 個字元
匯出 (0) 列印
全部展開

Azure 角色中快取中的逾期和收回

更新日期: 2015年5月

note附註
如需為應用程式選擇正確 Azure 快取提供項目的相關指引,請參閱 我適合使用哪個 Azure 快取服務?

Microsoft Azure 快取 不會將快取的物件永久保留在記憶體中。除了使用 Remove 方法明確地將物件從快取移除之外,已快取的物件可能也會過期或由快取叢集移出記憶體。

快取到期機制可讓快取叢集自動將已快取的物件從快取移除。使用 PutAdd 方法時,可以為特定快取物件設定逾時值,以決定物件可保留在快取中的時間。如果快取物件時未提供物件逾時值,快取的物件會使用預設到期時間。

當使用角色型 快取,您有三個到期選項:

 

到期類型 描述

到期已停用。除非項目被收回或快取叢集重新啟動,否則項目會維持在快取中。

絕對

建立項目後經歷設定的期間,項目即會到期。

滑動

前次存取項目後經歷設定的期間,項目即會到期。每次存取物件後,即會重設滑動的時間間隔。這可延長常用項目在快取中的時間。

note附註
請務必注意當與本機快取結合使用時,會有 [滑動] 到期的行為。如果從本機快取讀取項目時,這不會存取快取叢集上的物件。所以即使正在從本機讀取項目,伺服器上的項目仍可能到期。

在 Shared Caching 中,到期永遠為 [絕對],且無法設定預設到期時間。Shared Caching 中的項目將於 48 小時後到期。然而,您可以在程式碼中,使用 PutAdd 方法來設定明確到期時間。請注意,ASP.NET 提供者會自動使用這些多載,來提供工作階段狀態與輸出快取的明確逾時。在任一種情況下,當您的快取大小超出 Shared Caching 提供項目的限制時,系統就會收回快取中最近最少使用的項目。

當因為並行存取原因而鎖定物件時,即使物件已到期,系統也不會將物件從快取移除。只有當物件被解除鎖定,而且已經過其到期時間,系統才會將物件從快取移除。

為避免解除鎖定已到期的物件時物件立即被移除,Unlock 方法也支援延長已快取之物件的到期時間。

本機快取有兩種互補性無效判定:「逾時型無效判定」和「通知型無效判定」。

Tip提示
當物件儲存在本機快取之後,不論物件是否由快取叢集中的另一個用戶端更新,��的應用程式都會使用那些物件 (直到那些物件被判定為無效)。因此,最好針對甚少變更的資料啟用本機快取。

當物件下載到本機快取之後,它們會一直存在於本機快取,直到達到快取用戶端組態設定所指定的逾時值。達到此逾時值時,物件會被判定為無效,這樣當用戶端下次要求該物件時,系統會從快取叢集更新該物件。

若您的快取用戶端已啟用本機快取,您也可以使用快取通知將本機快取的物件自動判定為無效。透過「依需求」縮短物件存留期的方式,可以降低應用程式使用過時資料的情況。

note附註
Shared Caching 中不支援通知。

當您使用快取通知時,應用程式會定期檢查快取叢集,判斷是否有新的通知可用。此檢查間隔稱為輪詢間隔,預設是 300 秒。輪詢間隔是在應用程式組態檔中指定,單位為秒。請注意,即使使用通知型無效判定,逾時仍適用於本機快取中的物件。這樣可以讓通知型無效判定彌補逾時型無效判定的不足。

如需詳細資訊和範例,請參閱Azure 角色中快取中的本機快取

為維持記憶體容量可供每部快取主機上的快取使用,系統支援「最近最少使用」(LRU) 收回。系統會使用閾值來確定記憶體已平均分配給叢集中的所有快取主機。閾值由下列兩個因素來決定:每部機器上可用的實體記憶體,以及每部機器中保留的快取記憶體的百分比。

當記憶體耗用量稍出記憶體臨界值時,就會從記憶體收回物件,不論物件是否已過期,直到記憶體壓力解除為止。後續放入快取的物件可能會被重新路由到其他快取叢集中的機器,以維持記憶體的最佳分配狀態。

Warning警告
如果您停用移出,您會經歷調整配置的風險。在這種情況下,記憶體已超出閾值,但無法緩和記憶體不足的情形。當用戶端嘗試在此狀態中新增項目至快取,則會收到例外狀況,直到解決此問題。請注意,Shared Caching 不支援在外取上停用收回。

到期與移出行為是在叢集組態設定的具名快取等級設定。

您可以使用下列方法來覆寫快取中的預設設定:

  • AddPut 方法提供多載,可讓您僅針對新增至快取的物件指定到期逾時值。

  • PutAndUnlockUnlock 方法提供多載,可讓您在解除鎖定物件之後延長其到期時間。

  • ResetObjectTimeout 方法可讓您明確地延長物件的存留期,以覆寫快取的到期設定。

不論到期或收回設定為何,若快取叢集重新啟動,快取中的所有物件都會被清空。您的應用程式程式碼必須能夠在無法於快取找到資料時從資料來源重新載入快取。這通常稱為「找不到快取時的程式設計模式」。

另請參閱

顯示:
© 2015 Microsoft