如何使用 Windows Azure Caching

 我来答
huanglenzhi
推荐于2016-04-14 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517183
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
Windows Azure Caching 入门
Windows Azure Caching 提供了一种使用承载角色实例的虚拟机上的内存来进行缓存的方法。承载缓存的角色实例称为缓存群集。专用角色缓存 - 这些角色实例专用于缓存。
若要在角色实例中使用缓存,您需要配置缓存群集,然后配置缓存客户端以便它们可以访问缓存群集。
配置缓存群集
配置缓存客户端
配置缓存群集
若要配置专用角色缓存群集,请向项目中添加缓存辅助角色。

在向项目中添加缓存辅助角色后,默认配置是专用角色缓存。

在启用缓存后,可以配置缓存群集存储帐户。Windows Azure Caching 需要 Windows Azure 存储帐户。此存储帐户用于保存从组成缓存群集的所有虚拟机访问的缓存群集的相关配置数据。此存储帐户在缓存群集角色属性页的“缓存”选项卡上的“命名缓存设置”上方指定。

如果没有配置此存储帐户,则角色将无法启动。
缓存的大小由角色的 VM 大小、角色的实例计数共同决定。
本节提供了有关配置缓存大小的简单概述。有关缓存大小及其他容量规划注意事项的更多信息,请参见 Windows Azure Caching 容量规划注意事项。
若要配置虚拟机大小和角色实例数,请在“解决方案资源管理器”中右键单击角色属性,然后选择“属性”。

切换到“配置”选项卡。默认的“实例计数”为 1,默认的“VM 大小”为“小型”。

VM 大小的总内存如下:
小型:1.75 GB
中型:3.5 GB
大型:7 GB
超大型:14 GB
这些内存大小表示可用于跨 OS、缓存进程、缓存数据和应用程序共享的 VM 的内存总量。有关配置虚拟机大小的更多信息,请参见如何配置虚拟机大小。请注意,特小型 VM 大小不支持缓存。
在指定专用角色缓存后,虚拟机的所有可用内存均用于缓存。如果配置了两个角色实例,将使用虚拟机的组合内存。这构成了缓存群集,其中的可用缓存内存分布在多个角色实例上,但对缓存的客户端显示为单个资源。配置其他角色实例会以相同方式增加缓存大小。若要确定设置所需大小的缓存所需的设置,您可以使用 Windows Azure Caching 容量规划注意事项中的容量规划电子表格。
在配置缓存群集后,可以配置缓存客户端以允许访问缓存。
配置缓存客户端
若要访问 Windows Azure Caching 缓存,客户端必须位于同一部署中。如果缓存群集是专用角色缓存群集,则客户端是部署中的其他角色。提供了 NuGet 包,它可用于配置访问缓存的每个客户端角色。若要使用 Caching NuGet 包配置角色以访问缓存群集,请在“解决方案资源管理器”中右键单击角色项目,然后选择“管理 NuGet 包”。

选择“Windows Azure Caching”,单击“安装”,然后单击“我接受”。
如果“Windows Azure Caching”没有显示在列表中,请在“联机搜索”文本框中键入 WindowsAzure.Caching,然后从结果中选择它。

NuGet 包可执行多项操作:它将所需配置添加到角色的配置文件中,将缓存客户端诊断级别设置添加到 Windows Azure 应用程序的 ServiceConfiguration.cscfg 文件中,并添加所需的程序集引用。
对于 ASP.NET Web 角色,Caching NuGet 包还将两个注释掉的节添加到 web.config 中。第一个节允许会话状态存储在缓存中,第二个节启用 ASP.NET 页面输出缓存。有关更多信息,请参见如何:在缓存中存储 ASP.NET 会话状态和如何:在缓存中存储 ASP.NET 页面输出缓存。
NuGet 包将以下配置元素添加到角色的 web.config 或 app.config 中。将 dataCacheClients 节和 cacheDiagnostics 节添加到configSections 元素之下。如果 configSections 元素不存在,则会创建一个作为 configuration 元素的子级。
<configSections>
<!-- Existing sections omitted for clarity. -->

<section name="dataCacheClients"
type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
allowLocation="true"
allowDefinition="Everywhere" />

<section name="cacheDiagnostics"
type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon"
allowLocation="true"
allowDefinition="Everywhere" />
</configSections>

这些新节包括对 dataCacheClients 元素和 cacheDiagnostics 元素的引用。这些元素还添加到 configuration 元素中。
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
<!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
</dataCacheClient>
</dataCacheClients>
<cacheDiagnostics>
<crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
</cacheDiagnostics>

在添加配置后,将 [cache cluster role name] 替换为承载缓存群集的角色的名称。
如果没有将 [cache cluster role name] 替换为承载缓存群集的角色的名称,则在访问缓存时会引发TargetInvocationException,其内部 DatacacheException 将显示消息“No such role exists”。
NuGet 包还将 ClientDiagnosticLevel 设置添加到 ServiceConfiguration.cscfg 中的缓存客户端角色的 ConfigurationSettings中。下面的示例是 ServiceConfiguration.cscfg 文件中的 WebRole1 节,其 ClientDiagnosticLevel 为 1,这是默认的ClientDiagnosticLevel。
<Role name="WebRole1">
<Instances count="1" />
<ConfigurationSettings>
<!-- Existing settings omitted for clarity. -->
<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel"
value="1" />
</ConfigurationSettings>
</Role>

Windows Azure Caching 同时提供了缓存服务器和缓存客户端诊断级别。诊断级别是配置为缓存收集的诊断信息级别的单个设置。有关更多信息,请参见解决和诊断 Windows Azure Caching 问题
NuGet 包还添加对以下程序集的引用:
Microsoft.ApplicationServer.Caching.Client.dll
Microsoft.ApplicationServer.Caching.Core.dll
Microsoft.WindowsFabric.Common.dll
Microsoft.WindowsFabric.Data.Common.dll
Microsoft.ApplicationServer.Caching.AzureCommon.dll
Microsoft.ApplicationServer.Caching.AzureClientHelper.dll
如果您的角色是 ASP.NET Web 角色,则还添加以下程序集引用:
Microsoft.Web.DistributedCache.dll。
这些程序集位于 C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\ref\Caching\ 文件夹中。
在配置了您的客户端项目的缓存后,您可以使用以下各节中介绍的方法来使用您的缓存。
使用缓存
本节中的步骤介绍如何使用缓存执行常见任务。
如何:创建 DataCache 对象
如何:在缓存中添加和检索对象
如何:在缓存中指定对象的有效期
如何:在缓存中存储 ASP.NET 会话状态
如何:在缓存中存储 ASP.NET 页面输出缓存
如何:创建 DataCache 对象
若要以编程方式使用缓存,您需要引用该缓存。将以下代码添加到要从中使用 Windows Azure Caching 的任何文件的顶部:
using Microsoft.ApplicationServer.Caching;

如果在安装了添加必要引用的 Caching NuGet 包后,Visual Studio 仍不能识别 using 语句中的类型,请确保项目的目标配置文件是 .NET Framework 2.0 或更高版本,并确保选择没有指定客户端配置文件的配置文件之一。有关配置缓存客户端的说明,请参见配置缓存客户端。
创建 DataCache 对象有两种方法。第一种方法是仅创建 DataCache,并传入所需缓存的名称。
DataCache cache = new DataCache("default");

在实例化 DataCache 后,您可以使用它来与缓存交互,如以下各节中所述。
若要使用第二种方法,请在您的应用程序中使用默认的构造函数创建新的 DataCacheFactory 对象。这会导致缓存客户端使用配置文件中的设置。调用新的 DataCacheFactory 实例的 GetDefaultCache 方法,该方法返回 DataCache 对象,或调用 GetCache 方法并传入您的缓存的名称。这些方法返回以后可用于以编程方式访问缓存的 DataCache 对象。
// Cache client configured by settings in application configuration file.
DataCacheFactory cacheFactory = new DataCacheFactory();
DataCache cache = cacheFactory.GetDefaultCache();
// Or DataCache cache = cacheFactory.GetCache("MyCache");
// cache can now be used to add and retrieve items.

如何:在缓存中添加和检索对象
若要向缓存中添加项,可以使用 Add 或 Put 方法。Add 方法将指定的对象添加到缓存中,并按键参数的值进行键控。
// Add the string "value" to the cache, keyed by "item"
cache.Add("item", "value");

如果缓存中已存在具有相同键的对象,将引发 DataCacheException 并显示以下消息:
ErrorCode:SubStatus:An attempt is being made to create an object with a Key that already exists in the cache.Caching will only accept unique Key values for objects.
若要检索具有特定键的对象,可以使用 Get 方法。如果对象存在,则返回它,如果对象不存在,则返回 null。
// Add the string "value" to the cache, keyed by "key"
object result = cache.Get("Item");
if (result == null)
{
// "Item" not in cache. Obtain it from specified data source
// and add it.
string value = GetItemValue(...);
cache.Add("item", value);
}
else
{
// "Item" is in cache, cast result to correct type.
}

如果具有指定键的对象不存在,则 Put 方法将该对象添加到缓存中,如果该对象存在,则替换它。
// Add the string "value" to the cache, keyed by "item". If it exists,
// replace it.
cache.Put("item", "value");

如何:在缓存中指定对象的有效期
默认情况下,缓存中的项在放入缓存中 10 分钟后到期。这可在承载缓存群集的角色的角色属性中的“生存时间(分钟)”设置中进行配置。

有三种类型的“过期类型”:“无”、“绝对”和“可调窗口”。这些类型配置如何使用“生存时间(分钟)”来确定有效期。默认的“过期类型”为“绝对”,这意味着在将项放入缓存中时,记录该项有效期的倒计时器即会启动。在项经过指定的时间后,该项过期。如果指定了“可调窗口”,则在每次访问缓存中的项时,会重置该项的有效期倒计时,并且仅在自上次访问该项后经过指定的一段时间后,该项才会过期。如果指定了“无”,则“生存时间(分钟)”必须设置为“0”,并且项不会过期,只要它们在缓存中就会保持有效。
如果需要比在角色属性中配置的时间更长或更短的超时时间间隔,则可以在缓存中添加或更新项时,使用采用 TimeSpan 参数的 Add和 Put 的重载来指定特定持续时间。在下面的示例中,将字符串 value 添加到缓存中,按 item 进行键控,且超时为 30 分钟。
// Add the string "value" to the cache, keyed by "item"
cache.Add("item", "value", TimeSpan.FromMinutes(30));

若要查看缓存中的项的剩余超时时间间隔,可以使用 GetCacheItem 方法来检索 DataCacheItem 对象,该对象包含有关缓存中项的信息,其中包括剩余超时时间间隔。
// Get a DataCacheItem object that contains information about
// "item" in the cache. If there is no object keyed by "item" null
// is returned.
DataCacheItem item = cache.GetCacheItem("item");
TimeSpan timeRemaining = item.Timeout;
快又稳
2024-10-23 广告
广州快又稳网络科技有限公司是一家集技术研发、产品创新、服务优化于一体的高新技术企业。公司自成立以来,始终秉承“网络使人类缩进距离,我们让网络快又稳”的核心理念,致力于为全球客户提供高效、安全、易用的互联网解决方案及信息技术服务。在数字时代,... 点击进入详情页
本回答由快又稳提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式