快速入门:将 Azure Redis 缓存与 ASP.NET Web 应用配合使用
在本快速入门中,将使用 Visual Studio 2019 创建一个 ASP.NET Web 应用程序,该应用程序连接到 Azure Redis 缓存以存储和检索缓存中的数据。 然后,将该应用部署到 Azure 应用服务。
跳到 GitHub 上的代码
克隆 GitHub 上的存储库 https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/aspnet。
先决条件
- Azure 订阅 - 创建订阅
- Visual Studio 2019,其中包含 ASP.NET 和 Web 开发以及 Azure 开发工作负载。
创建缓存
接下来,为应用创建缓存。
若要创建缓存,请登录到 Azure 门户并选择“创建资源” 。
在“入门”页上的搜索框中键入“Azure Cache for Redis”。 然后选择创建。
在“新建 Redis 缓存”页上配置缓存的设置。
设置 选择值 说明 订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。 资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。 DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名是 <DNS name>.redis.cache.chinacloudapi.cn。 位置 单击下拉箭头并选择一个位置。 选择使用缓存的其他服务附近的区域。 缓存 SKU 打开下拉列表并选择一个 SKU。 此 SKU 决定可用于缓存的大小、性能和功能参数。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述。 缓存大小 打开下拉列表并选择缓存的大小 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述。 选择网络选项卡,或选择网络按钮(位于页面底部) 。
在网络选项卡中,选择你的连接方法。
选择“下一步: 高级”选项卡,或选择页面底部的“下一步: 高级”按钮,以查看“高级”选项卡。
- 对于“基本”或“标准”缓存,请切换非 TLS 端口的选项。 还可以选择是否要启用“Microsoft Entra 身份验证”。
- 对于“高级”缓存,请配置非 TLS 端口、群集、托管标识和数据持久性的设置。 还可以选择是否要启用“Microsoft Entra 身份验证”。
选择下一步: 标记选项卡,或选择页面底部的下一步: 标记按钮 。
或者,在标记选项卡中,如果希望对资源分类,请输入名称或值。
选择“查看 + 创建”。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。
显示绿色的“已通过验证”消息后,选择创建。
创建缓存需要一段时间。 可以在 Azure Cache for Redis 的概述页上监视进度。 如果状态显示为正在运行,则表示该缓存可供使用。
在缓存上启用 Microsoft Entra ID 身份验证
如果已有缓存,则需要检查是否已启用 Microsoft Entra 身份验证。 如果未启用,请启用它。 建议为应用使用 Microsoft Entra ID。
在 Azure 门户中,选择你想要使用基于 Microsoft Entra 令牌的身份验证的 Azure Cache for Redis 实例。
从“资源”菜单中选择“身份验证”。
检查工作窗格,查看是否已选中“启用 Microsoft Entra 身份验证”。 如果已启用,可继续操作。
选择“启用 Microsoft Entra 身份验证”,然后输入有效用户的姓名。 选择“保存”时,系统会自动向你输入的用户默认分配数据所有者访问策略。 还可输入托管标识或服务主体以连接到缓存实例。
这会显示一个弹出对话框,询问是否要更新配置,并通知你这需要几分钟时间。 选择是。
重要
启用操作完成后,缓存实例中的节点将重新启动以加载新配置。 建议在维护时段或高峰营业时间外执行此操作。 此操作最多可能需要 30 分钟。
若要将 Microsoft Entra ID 与 Azure CLI 配合使用,请查看标识参考页面。
编辑 CacheSecrets.config 文件的步骤
在计算机上创建名为 CacheSecrets.config 的文件。将其放到不会连同示例应用程序的源代码一起签入的位置。 在本快速入门中,CacheSecrets.config 文件的路径为 C:\AppSecrets\CacheSecrets.config。
编辑 Web.config 文件。 然后添加以下内容:
<appSettings> <add key="RedisHostName" value="<cache-hostname>:<port-number>"/> </appSettings>
将
<cache-hostname>
替换为缓存主机名,因为它显示在 Azure 门户的“概述”边栏选项卡中将
<port-number>
替换为缓存主机端口号。保存文件。
更新 MVC 应用程序
在本部分,你可以看到一个 MVC 应用程序,它提供一个视图,其中显示了针对 Azure Cache for Redis 执行的简单测试。
安装 StackExchange.Redis
你的解决方案需要 StackExchange.Redis
包才能正常运行。 请使用以下过程安装此包:
若要将应用配置为使用 Visual Studio 的 StackExchange.Redis NuGet 包,请选择“工具”>“NuGet 包管理器”>“包管理器控制台”。
从
Package Manager Console
窗口运行以下命令:Install-Package Microsoft.Azure.StackExchangeRedis
NuGet 包将为客户端应用程序下载并添加所需的程序集引用,以通过
Microsoft.Azure.StackExchangeRedis
客户端访问 Azure Cache for Redis。
使用 RedisConnection 连接到缓存
与缓存的连接由 RedisConnection
类管理。 首先在 ContosoTeamStats/Controllers/HomeController.cs
中使用此语句建立连接:
private static Task<RedisConnection> _redisConnectionFactory = RedisConnection.InitializeAsync(redisHostName: ConfigurationManager.AppSettings["RedisHostName"].ToString());
在 RedisConnection.cs
中,可以看到 StackExchange.Redis
命名空间已添加到代码中。 RedisConnection
类需要此命名空间。
using StackExchange.Redis;
RedisConnection
代码通过管理 StackExchange.Redis
中的 ConnectionMultiplexer
实例来确保始终与缓存建立运行状况正常的连接。 连接丢失且无法自动重新连接时,RedisConnection
类会重新创建该连接。
以下代码行使用 Microsoft Entra ID 连接到 Azure Cache for Redis,无需密码。
var configurationOptions = await ConfigurationOptions.Parse($"{_redisHostName}").ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
有关详细信息,请参阅 StackExchange.Redis 和 GitHub 存储库中的代码。
示例中的布局视图
此示例的主页布局存储在 _Layout.cshtml 文件中。 在此页中,可以通过单击“Azure Cache for Redis 测试”来启动实际的缓存测试。
在解决方案资源管理器中,展开“视图”>“共享”文件夹。 然后打开 _Layout.cshtml 文件。
在
<div class="navbar-header">
中可以看到以下行。@Html.ActionLink("Azure Cache for Redis Test", "RedisCache", "Home", new { area = "" }, new { @class = "navbar-brand" })
显示缓存中的数据
在主页中,选择“Azure Cache for Redis 测试”以查看示例输出。
在“解决方案资源管理器”中,展开“Views”文件夹,并右键单击“Home”文件夹。
在 RedisCache.cshtml 文件中应会看到此代码。
@{ ViewBag.Title = "Azure Cache for Redis Test"; } <h2>@ViewBag.Title.</h2> <h3>@ViewBag.Message</h3> <br /><br /> <table border="1" cellpadding="10"> <tr> <th>Command</th> <th>Result</th> </tr> <tr> <td>@ViewBag.command1</td> <td><pre>@ViewBag.command1Result</pre></td> </tr> <tr> <td>@ViewBag.command2</td> <td><pre>@ViewBag.command2Result</pre></td> </tr> <tr> <td>@ViewBag.command3</td> <td><pre>@ViewBag.command3Result</pre></td> </tr> <tr> <td>@ViewBag.command4</td> <td><pre>@ViewBag.command4Result</pre></td> </tr> <tr> <td>@ViewBag.command5</td> <td><pre>@ViewBag.command5Result</pre></td> </tr> </table>
在本地运行应用
默认情况下,项目配置为在 IIS Express 本地托管应用,以进行测试和调试。
在本地运行应用的步骤
在 Visual Studio 中选择“调试”>“开始调试”,在本地生成并启动用于测试和调试的应用。
在浏览器中,选择导航栏上的“Azure Redis 缓存测试”。
在下面的示例中,
Message
键以前有一个缓存值,该值是在门户中使用 Azure Redis 缓存控制台设置的。 应用更新了该缓存值。 应用还执行了PING
和CLIENT LIST
命令。
在 Azure 中发布和运行
在本地成功测试应用后,即可将应用部署到 Azure 并在云中运行它。
将应用发布到 Azure 的步骤
在 Visual Studio 中右键单击解决方案资源管理器中的项目节点, 然后选择“发布”。
依次选择“Azure 应用服务”、“新建”、“发布”。
在“创建应用服务”对话框中进行以下更改:
设置 建议的值 说明 应用名称 使用默认值。 应用名称是应用部署到 Azure 时对应的主机名。 如果需要让该名称保持唯一,可在其后添加一个时间戳后缀。 订阅 选择自己的 Azure 订阅。 将对此订阅收取任何相关的托管费用。 如果有多个 Azure 订阅,请验证是否选择了所需的订阅。 资源组 使用在其中创建了此缓存的资源组(例如,TestResourceGroup)。 该资源组用于将所有资源作为一个组管理。 以后想要删除此应用时,可以直接删除该组。 应用服务计划 选择“新建”,然后创建名为 TestingPlan 的新应用服务计划。
使用创建缓存时所用的相同位置。
选择“免费”作为大小。应用服务计划为要运行的 Web 应用定义一组计算资源。 配置应用服务托管设置以后,请选择“创建”。
监视 Visual Studio 中的“输出”窗口,了解发布状态。 发布应用后,系统会记录应用的 URL:
为缓存添加应用设置
发布新应用以后,请添加新应用设置。 此设置用于存储缓存连接信息。
添加应用设置的步骤
在 Azure 门户顶部的搜索栏中键入应用名称,查找刚创建的新应用。
为应用添加名为 CacheConnection 的新应用设置,用于连接到缓存。 使用在 web.config 文件中为
RedisHostName
配置的相同值。
在 Azure 中运行应用
在浏览器中,转到应用的 URL。 该 URL 显示在 Visual Studio 输出窗口的发布操作结果中。 此外,在 Azure 门户中,所创建应用的概览页上也提供了该 URL。
在导航栏中选择“Azure Cache for Redis 测试”,像在本地版本中那样测试缓存访问。
清理资源
要继续使用在本文中创建的资源,请保留资源组。
否则,如果已完成资源,可以删除创建的 Azure 资源组以避免产生费用。
重要
删除资源组的操作不可逆。 删除资源组时,包含在其中的所有资源会被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组(其中包含要保留的资源)内创建了此资源,可以逐个删除这些资源,而不是删除资源组。
删除资源组的步骤
登录到 Azure 门户,然后选择“资源组”。
选择要删除的资源组。
如果有多个资源组,请使用“筛选任何字段...”框,键入为本文创建的资源组的名称。 在结果列表中选择资源组。
选择“删除资源组”。
系统会要求确认是否删除资源组。 键入资源组的名称进行确认,然后选择“删除”。
片刻之后,将会删除该资源组及其所有资源。