到期與收回 (Windows Server AppFabric 快取)
在 Windows Server AppFabric 中,已快取的物件並不會一直維持在記憶體中。除了使用 Remove 方法明確地將物件從快取移除之外,已快取的物件可能也會過期或由快取叢集移出記憶體。
到期
快取到期機制可讓快取叢集自動將已快取的物件從快取移除。使用 Put 或 Add 方法時,可以為特定快取物件設定逾時值,以決定物件可保留在快取中的時間。若將物件放入快取時並未提供逾時值,則會使用在叢集組態設定中指定的值來決定物件在快取中的存留期。
當因為並行存取原因而鎖定物件時,即使物件已到期,系統也不會將物件從快取移除。只有當物件被解除鎖定,而且已經過其到期時間,系統才會將物件從快取移除。
為避免解除鎖定已到期的物件時物件立即被移除,Unlock 方法也支援延長已快取之物件的到期時間。如需有關支援之並行存取模式與方法的詳細資訊,請參閱並行存取模型 (Windows Server AppFabric 快取)與並行存取方式 (Windows Server AppFabric 快取)。
本機快取無效判定
本機快取有兩種互補性無效判定:「逾時型無效判定」和「通知型無效判定」。如需以程式設計方式啟用本機快取的範例,請參閱啟用 Windows Server AppFabric 本機快取。如需使用應用程式組態檔來啟用本機快取的範例,請參閱啟用 Windows Server AppFabric 本機快取 (XML)。
提示
當物件儲存在本機快取之後,不論物件是否由快取叢集中的另一個用戶端更新,您的應用程式都會繼續使用那些物件 (直到那些物件被判定為無效)。因此,最好針對甚少變更的資料使用本機快取。
逾時型無效判定
當物件下載到本機快取之後,它們會一直存在於本機快取,直到達到快取用戶端組態設定所指定的逾時值。達到此逾時值時,物件會被判定為無效,這樣當用戶端下次要求該物件時,系統會從快取叢集更新該物件。
通知型無效判定
若您的快取用戶端已啟用本機快取,您也可以使用快取通知將本機快取的物件自動判定為無效。透過「依需求」縮短物件存留期的方式,可以降低應用程式使用過時資料的情況。
當您使用快取通知時,應用程式會定期檢查快取叢集,判斷是否有新的通知可用。此檢查間隔稱為輪詢間隔,預設是 300 秒。輪詢間隔是在應用程式組態檔中指定,單位為秒。請注意,即使使用通知型無效判定,逾時仍適用於本機快取中的物件。這樣可以讓通知型無效判定彌補逾時型無效判定的不足。
警告
若要讓您的應用程式使用通知,您必須在具名快取上啟用應用程式。使用 NotificationsEnabled
參數來搭配 New-Cache
或 Set-CacheConfig
命令。如需詳細資訊,請參閱使用 Windows PowerShell 來管理 Windows Server AppFabric 快取功能。
收回
為維持記憶體空間供每部快取主機上的快取使用,AppFabric 支援「最近最少使用」(LRU) 收回。系統會使用閾值 (稱為「水位線」) 來確定記憶體以平均分配給叢集中的所有快取主機。
當快取伺服器上之快取服務使用的記憶體超過低水位線閾值時,AppFabric 會開始將已到期的物件移出記憶體。
當記憶體使用量超過高水位線閾值時,系統會將物件從記憶體移除 (不論物件是否已到期),直到記憶體使用量回到低水位線標準。後續放入快取的物件可能會被重新路由到其他主機,以維持記憶體的最佳分配狀態。
指定到期與移出設定
到期與移出行為是在叢集組態設定的具名快取等級設定。您可以使用 Windows PowerShell 型快取管理工具來設定這些快取等級設定。如需詳細資訊,請參閱使用 Windows PowerShell 來管理 Windows Server AppFabric 快取功能。
此外,您也可以使用下列方法來覆寫快取中的預設設定:
PutAndUnlock 與 Unlock 方法提供多載,可讓您在解除鎖定物件之後延長其到期時間。
ResetObjectTimeout 方法可讓您明確地延長物件的存留期,以覆寫快取的到期設定。
不論到期或移出設定為何,若快取叢集重新啟動,快取中的所有物件都會被排清。您的應用程式程式碼必須能夠在無法於快取找到資料時從資料來源重新載入快取。這通常稱為「找不到快取時的程式設計模式」。
另請參閱
概念
Windows Server AppFabric 快取功能實體架構圖
Windows Server AppFabric 快取功能邏輯架構圖
快取用戶端與本機快取 (Windows Server AppFabric 快取)
啟用 Windows Server AppFabric 本機快取
啟用 Windows Server AppFabric 本機快取 (XML)
開發快取用戶端 (Windows Server AppFabric 快取)
2011-12-05