Azure 角色中缓存中的本地缓存
重要
Microsoft 建议所有新开发使用 Azure Redis 缓存。 有关选择 Azure 缓存产品/服务的当前文档和指南,请参阅 哪个 Azure 缓存产品/服务适合我?
本地缓存是Microsoft Azure缓存的一项功能,通过减少对远程缓存的网络请求来提高性能。 Microsoft Azure缓存将对象以序列化形式存储在内存中缓存中,该缓存分布在多个服务器上。 在某一应用程序需要请求缓存中的对象时,首先要确定存储该对象的服务器。 该服务器然后通过网络将序列化对象缓存到请求的应用程序中。 然后,该应用程序反序列化该对象以便供其使用。 若要加快检索某个对象的过程,请启用本地缓存。
本地缓存概述
当启用本地缓存时,缓存客户端在本地存储对对象的引用。 此本地引用将使对象在客户端应用程序的内存中保持活动状态。 当应用程序请求对象时,缓存客户端将检查对象是否位于本地缓存中。 如果位于本地缓存中,则立即返回对该对象的引用,而不联系服务器。 如果不在本地缓存中,则从服务器检索该对象。 然后,缓存客户端反序列化该对象并将对此新检索到的对象的引用存储在本地缓存中。 客户端应用程序也使用该对象。
本地缓存中的对象的生存期取决于本地缓存中的对象的最大数目和失效策略。 本地缓存有两种类型的无效:基于超时的无效和基于通知的无效。 有关详细信息,请参阅 Azure In-Role 缓存中的过期和逐出。
配置设置
可以使用 web.config 或应用程序配置文件启用和配置本地缓存。 可以将 localCache 元素添加到 dataCacheClient 节。 下表列出了 localCache 元素的属性。
属性 | 说明 |
---|---|
isEnabled |
设置为 |
同步 |
确定使本地缓存失效的方式。 可能值为 |
objectCount |
要在本地缓存中存储的对象的最大数目。 默认值为 10000。 |
ttlValue |
本地缓存中保留对象的秒数。 默认值为 300 秒。 |
同步值将TimeoutBased
对象保留在本地缓存,直到达到 ttlValue 限制。 NotificationBased
的值不但使用基于超时的机制,而且还使用通知。 若要对失效使用通知,请为缓存启用通知。 通知的轮询间隔将检查本地缓存中的项目是否已更改。 通知的有效轮询间隔必须短于 ttlValue 设置才能生效。 添加元素 clientNotification 可用于配置通知的轮询间隔,方法是将 pollInterval 属性设置为秒数。 默认值为 300 秒。
注意
通知是在 Azure 角色上托管的缓存中仅支持In-Role缓存功能。
示例
以下示例演示了一个 dataCacheClient 部分,该节使用本地缓存,其超时本地过期时间为 5 分钟, (300 秒) 。
<dataCacheClient name="default">
<!-- Other configuration settings for cache -->
<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />
</dataCacheClient>
以下示例演示了以前的 dataCacheClient 部分已更改为使用通知,通过轮询每一分钟 (60 秒) 提供额外的同步。 仅支持基于角色的In-Role缓存的通知。
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="WebRole1" />
<localCache isEnabled="true" sync="NotificationBased" objectCount="100000" ttlValue="300" />
<clientNotification pollInterval="60" />
</dataCacheClient>
若要下载使用本地缓存的示例,请参阅Caching API 和性能示例。