销售电话: 1-800-867-1380

Azure 托管缓存服务的通知

更新时间: 2014年9月

note备注
有关为你的应用程序选择合适的 Azure 缓存产品/服务的指导,请参阅 哪种 Azure Cache 产品/服务适合我?

Microsoft Azure Cache 提供缓存通知,允许你的应用程序在命名的缓存上发生各种缓存操作时接收异步通知。缓存通知还使本地缓存的对象自动失效。

若要接收异步缓存通知,请将缓存通知回调添加到你的应用程序。添加回调时,请定义触发缓存通知的缓存操作的类型以及发生指定操作时应调用应用程序中的哪个方法。命名缓存需要选择加入并启用缓存通知。

note备注
标准版和高级版缓存产品中都提供通知,基础版缓存产品中不提供通知。有关详细信息,请参阅 TechNet 上的 Azure 托管缓存服务的本地缓存产品.

这些缓存操作由 DataCacheOperations 类的成员定义。

你的应用程序可以在区域上发生以下缓存操作时接收缓存通知:

你的应用程序可以在缓存对象(称为缓存中的项目)上发生以下缓存操作时接收缓存通知。

note备注
这些项目操作本身不依赖于它们是否出现在区域中。你可以选择将你回调的通知范围限制在特定区域。本文档的“通知范围”部分将对此进行讨论。

根据应用程序的活动和需求,你可能不希望关注整个缓存中每个对象和区域中的事件。你可以将通知范围从缓存级别缩小到区域级别和项目级别。你在添加回调时所选的通知范围,对你将收到哪些缓存通知有着显著影响。

在缓存级别,你的应用程序可能收到有关该缓存所有对象和区域中的所有缓存操作的通知。在区域级别,你的应用程序将只能收到有关单个区域和其中对象的缓存操作的通知。在项目级别,你的应用程序将只能收到有关单个对象的缓存操作的通知。

若要指定所需的通知范围,请选择这三种方法之一来添加缓存通知回调:

  • AddCacheLevelCallback:当你希望收到有关所有区域和项目上发生的基于区域和项目的缓存操作的通知时。

  • AddRegionLevelCallback:当你希望收到有关某个特定区域上发生的基于区域和项目的缓存操作的通知时。

  • AddItemLevelCallback:当你希望收到有关某个特定项目上发生的基于项目的缓存操作的通知时。

缓存客户端接收通知的顺序应保证在一个区域的上下文中。例如,假设你已经创建了一个名为 RegionA 的区域。由于放入缓存区域的所有数据都限制到同一区域,因此有关 RegionA(区域级别通知范围)的所有缓存操作均会按照与彼此相关的适当顺序到达缓存客户端。不保证其他缓存主机上基于区域和项目的缓存操作按照与 RegionA 中发生的操作相关的适当顺序到达。

在性能方面,涉及多个地区或存储在不同地区的多个对象的通知,其顺序无法保证。

项目事件的版本信息将以 DataCacheItemVersion 对象的形式传递到缓存通知使用 version 参数调用的方法。此 DataCacheItemVersion 对象与触发项目事件的对象的版本相对应。通过使用 CompareTo 方法,你可以比较版本以确定哪个缓存操作最先到达。

note备注
仅当比较相同密钥指定的相同项目的版本时,版本比较才有意义。不可能通过比较不同密钥的版本来推断顺序;CompareTo 方法可返回一个结果,但是该结果只对相同密钥的版本有效。

使用缓存通知时,你的应用程序将定期向缓存查询以了解是否有任何新通知。此间隔称为轮询间隔,默认情况下为每 300 秒。频繁写入的应用程序可能需要将此间隔设置为一个较小的值,但对于不经常更改的缓存,设置较大的间隔可能会更好。默认值 300 秒适用于大多数一般缓存。

在应用程序配置设置中,轮询间隔是以秒为单位指定的。若要指定特定间隔,你可以使用应用程序配置文件中 pollInterval 元素的 clientNotifications 属性。你还可以使用 DataCacheFactoryConfiguration 对象的 NotificationProperties 属性以编程方式指定特定轮询间隔。

Microsoft Azure Cache 只能在内存中保留一定数量的缓存操作。在通知队列中截断通知之前,某些缓存客户端可能未收到通知。当数据由于缓存故障而丢失时,缓存客户端可能也会丢失通知。在这些情况下,你的缓存客户端可以通过使用故障通知来发现已经丢失了一些缓存通知。你的应用程序可以通过使用 AddFailureNotificationCallback 方法添加回调以接收故障通知。有关详细信息,请参阅 How to: Add a Failure Notification Callback

在通知丢失和缓存丢失之间存在重要区别。如果你的应用程序丢失一个或多个通知,则可以通过故障通知的方式察觉到丢失了通知。如果删除整个缓存,则在你下次尝试使用缓存时,缓存客户端将因无法连接到缓存终结点而引发异常。缓存事件(如命名缓存的创建或删除)不由通知报告。如果命名缓存在注册通知后被删除,则你仅仅会停止接收通知。无法在命名缓存不存在和未对命名缓存执行操作之间进行区分。

note备注
缓存通知只报告对缓存中的区域和缓存项目所做的与数据相关的更改,而不报告缓存本身的事件。

通知在管理门户中缓存“配置”选项卡上的命名缓存级别进行配置。通知的默认设置为“已禁用”。

Windows Azure 缓存服务的缓存通知

不需要任何应用程序配置设置添加用于接收缓存通知的回调。你可以使用应用程序配置设置来指定特定的轮询间隔。默认情况下,轮询间隔为 300 秒。如果需要其他持续时间,则使用基于 XML 的应用程序配置文件中的 clientNotification 元素,或使用 DataCacheFactoryConfiguration 对象的 NotificationsProperties 属性以编程方式指定你所需的间隔。

在启用缓存通知后,存在与使用缓存通知相关的三个任务:添加缓存通知回调、添加故障通知回调和删除缓存通知回调。每个任务的过程将在本文档的其余部分中介绍。

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft