Azure 角色中快取中的通知

重要

Microsoft 建議所有新的開發都使用 Azure Redis 快取。 如需選擇 Azure 快取供應專案的目前檔和指引,請參閱 哪個 Azure 快取供應專案適合我?

Azure 提供快取通知,可讓您的應用程式接收快取叢集上發生之各種快取操作的非同步通知。 快取通知也提供使本機快取的物件自動失效的功能。

若要接收非同步快取通知,請在您的應用程式中加入快取通知回呼。 當您加入回呼時,必須定義觸發快取通知的快取操作類型,以及發生指定的操作時應呼叫您的應用程式中的哪個方法。 具名快取需要選擇加入和啟用快取通知。

觸發快取通知

這些快取作業是由 DataCacheOperations 類別的成員所定義。

區域操作

當區域上發生下列快取操作時,您的應用程式可以接收快取通知:

項目操作

當快取物件 (快取中的項目) 上發生下列快取操作時,您的應用程式可能會收到快取通知。

注意

透過它們本身,這些項目操作不需依賴是否在區域中發生。 您可以選擇將回呼的通知範圍限制到特定區域。 這在本文件的<通知範圍>一節中討論。

通知範圍

視活動與您的應用程式需求而定,您可能不想收到快取中所有物件與區域的事件通知。 您可以將通知範圍從快取等級縮小到區域等級和項目等級。 加入回呼時選取的通知範圍會大幅影響您將收到的快取通知。

在快取等級,當快取中的任何物件或區域上發生快取操作時,您的應用程式可能都會收到快取通知。 在區域等級,只有當單一區域及其中的物件上發生快取操作時,您的應用程式才會收到快取通知。 在項目等級,只有當單一物件上發生快取操作時,您的應用程式才會收到快取通知。

若要指定快取範圍,請選擇下列三個方法的其中一個,來加入快取通知回呼:

  • AddCacheLevelCallback:當您想要收到所有區域和專案上發生區域和專案型快取作業的通知時。

  • AddRegionLevelCallback:當您想要收到某個特定區域發生區域和專案型快取作業的通知時。

  • AddItemLevelCallback:當您想要收到某個特定專案上發生專案型快取作業的通知時。

通知順序

在單一區域的範圍中,快取用戶端會收到依序傳來的通知。 例如,假設您已建立名為 RegionA 的區域。 因為放在該快取區域中的所有資料都限制為相同區域,與 RegionA 相關的所有快取操作(區域等級與通知範圍) 都會以適當的順序 (與彼此相關) 送達快取用戶端。 在其他快取主機上發生的區域與項目快取操作,則不一定會以適當的順序 (與 RegionA 中發生的操作相關) 送達。

為考量效能,無法確保牽涉到未儲存在相同區域之多個區域或物件的通知順序。

專案事件的版本資訊,以 DataCacheItemVersion 物件的形式傳遞至快取通知使用 參數叫用 version 的方法。 這個 DataCacheItemVersion 物件會對應至觸發專案事件的物件版本。 藉由使用 CompareTo 方法,您可以比較版本,以判斷哪些快取作業先出現。

注意

只有比較以相同索引鍵指定之相同項目的版本時,版本比較才有意義。 無法藉由比較不同索引鍵的版本來推斷順序; CompareTo 方法可能會傳回結果,但結果只適用于相同索引鍵的版本。

輪詢間隔

當您使用快取通知時,應用程式會定期檢查快取叢集,判斷是否有新的通知可用。 此檢查間隔稱為輪詢間隔,預設是 300 秒。 頻繁寫入的應用程式可能想要為此間隔設定更小的值,但是對於為經常變更的快取而言,較大的間隔會比較好。 300 秒的預設值對於大多數的一般快取而言是理想選擇。

輪詢間隔是在應用程式組態檔中指定,單位為秒。 若要指定特定間隔,您可以使用應用程式組態檔之 pollInterval 元素的 clientNotifications 屬性。 您也可以使用 NotificationPropertiesDataCacheFactoryConfiguration 物件的 屬性,以程式設計方式指定特定的輪詢間隔。

當通知遺失時

快取主機只能在記憶體中保留特定數量的快取操作。 在快取主機處理完佇列中的通知之前,某些快取用戶端可能不會收到通知。 當資料因為快取伺服器失敗但叢集其他部分仍繼續執行而遺失時,快取用戶端可能也會漏接通知。 在這些情況下,快取用戶端可以使用失敗通知來確認它已漏些某些快取通知。 您的應用程式可以使用 AddFailureNotificationCallback 方法來新增回呼以接收失敗通知。 如需詳細資訊,請參閱 如何:新增失敗通知回呼

當快取叢集遺失時

通知遺失與快取叢集遺失之間有很重要的差異。 若應用程式遺失一或多個通知,它可以透過失敗通知得知該遺失情況。 若整個快取叢集停止、重新啟動或遺失,將不會觸發任何通知。 在這種情況下,當您下次嘗試使用快取時,您的快取用戶端無法連線到叢集,快取用戶端將會擲回例外狀況。 通知不會報告快取建立或刪除此類快取叢集事件。 如果在註冊快取之後從伺服器中刪除快取,則只會停止接收通知。 系統不可能會區分快取不存在和操作無法在快取上執行的情況。

注意

快取通知只會報告叢集中區域與快取項目上發生的資料相關變更,而不會報告叢集本身的事件。

啟用快取通知

快取通知功能是在叢集組態設定的快取等級設定。 做為快取的內容,您可以在第一次建立快取時加以啟用。 根據預設值,當您建立新的快取時會停用快取通知功能。

不需要修改應用程式組態設定就可以加入回呼以接收快取通知。 您可以使用應用程式組態設定來指定特定的輪詢間隔。 根據預設值,輪詢間隔是 300 秒。 如果您想要不同的持續時間,請使用 clientNotification XML 型應用程式組態檔中的 元素,或使用DataCacheFactoryConfiguration物件的 屬性以程式設計方式 NotificationsProperties 指定所需的間隔。

使用快取通知

啟用快取通知之後,有三項與使用快取通知相關的工作:新增快取通知回呼、新增失敗通知回呼,以及移除快取通知回呼。 本文件的其餘部分將說明這些工作的程序。

另請參閱

概念

Azure 快取的角色中快取功能