角色中缓存角色的配置设置 (ServiceConfiguration.cscfg)

重要

Microsoft 建议所有新开发使用 Azure Redis 缓存。 有关选择 Azure 缓存产品/服务的当前文档和指南,请参阅 哪种 Azure 缓存产品/服务适合我?

本主题介绍 ServiceConfiguration.cscfg 文件中可用的Microsoft Azure缓存设置。 这些设置指定目标角色上的缓存配置。 Visual Studio中的角色属性对话框会在启用缓存时自动配置这些设置。 本主题中的参考信息最适用于想要利用缓存的非Visual Studio云服务部署。

ServiceConfiguration.cscfg

以下示例演示配置了缓存的基本 ServiceConfiguration.cscfg 文件。 此示例包含两个命名缓存:defaultNamedCache1。 这可以作为后面的参考部分的示例。

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="WindowsAzure1" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8">
  <Role name="WebRole1">
    <Instances count="2" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.NamedCaches" value="{&quot;caches&quot;:[{&quot;name&quot;:&quot;default&quot;,&quot;policy&quot;:{&quot;eviction&quot;:{&quot;type&quot;:0},&quot;expiration&quot;:{&quot;defaultTTL&quot;:10,&quot;isExpirable&quot;:true,&quot;type&quot;:1},&quot;serverNotification&quot;:{&quot;isEnabled&quot;:false}},&quot;secondaries&quot;:0},{&quot;name&quot;:&quot;NamedCache1&quot;,&quot;policy&quot;:{&quot;eviction&quot;:{&quot;type&quot;:-1},&quot;expiration&quot;:{&quot;defaultTTL&quot;:20,&quot;isExpirable&quot;:true,&quot;type&quot;:2},&quot;serverNotification&quot;:{&quot;isEnabled&quot;:true}},&quot;secondaries&quot;:1}]}" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.DiagnosticLevel" value="1" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="30" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

命名缓存

Microsoft.WindowsAzure.Plugins.Caching.NamedCaches 设置指定了所有缓存及其配置设置。 此信息是使用 JSON 语法来组织的。 在该语法中,双引号是使用 &quot; 字符实体引用来进行转义的。 下面的 NamedCaches 值取自上述完整的 ServiceConfiguration.cscfg 文件。

{&quot;caches&quot;:[{&quot;name&quot;:&quot;default&quot;,&quot;policy&quot;:{&quot;eviction&quot;:{&quot;type&quot;:0},&quot;expiration&quot;:{&quot;defaultTTL&quot;:10,&quot;isExpirable&quot;:true,&quot;type&quot;:1},&quot;serverNotification&quot;:{&quot;isEnabled&quot;:false}},&quot;secondaries&quot;:0},{&quot;name&quot;:&quot;NamedCache1&quot;,&quot;policy&quot;:{&quot;eviction&quot;:{&quot;type&quot;:-1},&quot;expiration&quot;:{&quot;defaultTTL&quot;:20,&quot;isExpirable&quot;:true,&quot;type&quot;:2},&quot;serverNotification&quot;:{&quot;isEnabled&quot;:true}},&quot;secondaries&quot;:1}]}

下面的示例显示与前面的示例相同的设置,但对输出进行了格式设置,并将 &quot; 符号替换为双引号。 显示此示例是为了更好地理解语法,不应在 ServiceConfiguration.cscfg 文件中使用此示例。

{
    "caches": [
        {
            "name": "default",
            "policy": {
                "eviction": {"type": 0},
                "expiration": {"defaultTTL": 10, "isExpirable": true, "type": 1},
                "serverNotification": {"isEnabled": false}
            },
            "secondaries": 0
        },
        {
            "name": "NamedCache1",
            "policy": {
                "eviction": {"type": -1},
                "expiration": {"defaultTTL": 20, "isExpirable": true, "type": 2},
                "serverNotification": {"isEnabled": true}
            },
           "secondaries": 1
        }
    ]
}

所有命名缓存都在顶级 缓存 字段中定义。 每个命名缓存由以下三个字段定义。

“缓存”字段 说明

name

指定缓存的名称。

策略

逐出、过期和通知设置的策略。

secondaries

定义实现高可用性所需维护的备份副本数。 此时,值必须为 01。 值 0 禁用高可用性。

策略字段由以下属性组成。

“策略”字段 说明

驱逐

包含一个字段, 类型,指定逐出的类型。 可能的值包括 0 (LRU) 和 -1(无)。 值 0 对最近最少使用的项目启用逐出。 值 -1 禁用逐出。

expiration

包含描述过期策略的三个字段。

  1. defaultTTL:项在过期之前保留在缓存中的分钟数。

  2. isExpirable:启用过期的值 true 和禁用过期值 false

  3. 类型:过期类型。 值 0 禁用过期。 值 1 指定绝对过期。 值 2 指定滑动过期。 如果使用滑动过期,则每次访问缓存中的项目均会重置过期时间。

重要

类型设置为 (0 禁用) ,isExpirable 必须设置为fasle并且 defaultTTL 必须设置为 0

serverNotification

包含一个字段 isEnabled,指定是否为此缓存启用通知。

ClientDiagnosticLevel

指定用于缓存的初始诊断集合级别。 此设置特定于作为缓存客户端的角色的诊断信息。 此设置从客户端角度提供了有关缓存使用的诊断信息。 请注意,在并置拓扑中,可以在同一角色配置中同时使用 ClientDiagnosticLevel 和 DiagnosticLevel。

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />

DiagnosticLevel

指定用于缓存的初始诊断集合级别。 此设置特定于有关托管缓存的角色的诊断信息。

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.DiagnosticLevel" value="1" />

CacheSizePercentage

用于缓存的可用内存百分比。 对于共存拓扑,这应是个不带百分号的整数,例如 30

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="30" />

对于专用拓扑,这应是个空字符串。

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="" />

ConfigStoreConnectionString

用于缓存的 Azure 存储帐户。 这是用于保存有关缓存群集的配置数据的存储,可从组成缓存群集的所有虚拟机中进行访问。 请注意,下面的示例使用用于本地调试的开发人员存储。 在部署到云之前,你应该将此存储更改为实际存储帐户。

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="UseDevelopmentStorage=true" />