你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:将 Azure Cache for Redis 与 ASP.NET Core Web 应用配合使用
在本快速入门中,我们将 Azure Cache for Redis 引入到一个 ASP.NET Core Web 应用程序中,该应用程序会连接到 Azure Cache for Redis 以在缓存中存储和检索数据。
.NET Core 中还有缓存提供程序。 若要快速开始使用 Redis,对现有代码进行最少更改,请参阅:
跳到 GitHub 上的代码
克隆 https://github.com/Azure-Samples/azure-cache-redis-samples GitHub 存储库并导航到 quickstart/aspnet-core
目录,查看后续步骤的完整源代码。
quickstart/aspnet-core
目录还配置为 Azure Developer CLI (azd
) 模板。 使用开源 azd
工具简化从本地环境到 Azure 的预配和部署。 (可选)运行 azd up
命令以自动预配 Azure Cache for Redis 实例,并配置本地示例应用以连接到它:
azd up
浏览 eShop 示例
在下一步,你会看到演示 ASP.NET Core 缓存提供程序的现实方案 eShop 应用程序:使用 Redis 缓存提供程序的 ASP.NET Core eShop。
包含的功能:
- Redis 分布式缓存
- Redis 会话状态提供程序
部署说明位于 README.md 中。
先决条件
- Azure 订阅 - 创建免费帐户
- .NET Core SDK
创建缓存
若要创建缓存,请登录到 Azure 门户。 在门户菜单上,选择“创建资源”。
在“入门”页上的搜索框中键入“Azure Cache for Redis”。 在搜索结果中找到“Azure Cache for Redis”,然后选择“创建”。
在“新建 Redis 缓存”窗格的“基本信息”选项卡上,配置缓存的以下设置:
设置 操作 说明 订阅 选择 Azure 订阅。 用于创建 Azure Cache for Redis 的新实例的订阅。 资源组 选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。 DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母和连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名为 \<DNS name>.redis.cache.windows.net
。位置 选择一个位置。 一个靠近其他使用缓存的服务的 Azure 区域。 缓存 SKU 选择 SKU。 此 SKU 决定可用于缓存的大小、性能和功能参数。 有关详细信息,请参阅 Azure Cache for Redis 概述。 缓存大小 选择缓存大小。 有关详细信息,请参阅 Azure Cache for Redis 概述。 选择“网络”选项卡,或选择“下一步:网络”。
在“网络”选项卡上,选择用于缓存的连接方法。
选择“高级”选项卡,或者选择“下一步:高级”。
在“高级”选项卡上,选中“Microsoft Entra 身份验证”复选框以启用 Microsoft Entra 身份验证。
重要
为了获得最佳安全性,我们建议你在可能的情况下使用 Microsoft Entra ID 和托管标识来授权针对缓存的请求。 与共享访问密钥授权相比,使用 Microsoft Entra ID 和托管标识进行授权提供了更高的安全性和易用性。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证。
(可选)选择“标记”选项卡或选择“下一步: 标记”。
(可选)如果希望对缓存资源进行分类,请在“标记”选项卡中输入标记名称和值。
选择“查看 + 创建”按钮。
在“查看 + 创建”选项卡上,Azure 会自动验证你的配置。
显示绿色的“已通过验证”消息后,选择“创建” 。
新的缓存部署需要几分钟的时间。 可以在 Azure Cache for Redis 的“概述”窗格上监视部署进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。
对缓存使用 Microsoft Entra ID 身份验证
Azure Redis 缓存(Enterprise 和 Enterprise Flash 层除外)默认启用了 Microsoft Entra 身份验证。 默认已禁用访问密钥。
重要
Microsoft 建议使用 Microsoft Entra ID 身份验证来获得最安全的身份验证体验,而不要使用密码或访问密钥。 本文本部分中所述的身份验证使用访问密钥,这需要高度信任应用程序,并且这种方法会带来风险,而使用 Microsoft Entra ID 则不存在这种风险。 请仅在 Microsoft Entra ID 身份验证不可行时才使用本文档中所述的方法。
在 Azure 门户中,选择你要在其中使用基于 Microsoft Entra 令牌的身份验证的缓存。
从“资源”菜单中选择“身份验证”。
选择“选择成员”并输入有效用户的名称。 选择“保存”时,系统会自动向你输入的用户默认分配数据所有者访问策略。 还可输入托管标识或服务主体以连接到缓存实例。
有关如何将 Microsoft Entra ID 与 Azure CLI 配合使用的信息,请参阅标识参考页面。
添加 Redis 访问策略
需要向访问 Azure Cache for Redis 的标识分配数据访问策略。 对于此示例,将数据访问策略分配给用于登录到 Azure CLI 或 Visual Studio 的同一 Microsoft Entra ID 帐户。
在缓存中选择“设置”资源菜单,然后选择“数据访问配置”。
在“数据访问配置”页上,从顶部导航栏中选择“添加”>“新 Redis 用户”。
在“新 Redis 用户”页上,选择“数据参与者”策略,然后选择“下一步: Redis 用户”。
选择“+ 选择成员”,打开浮出控件菜单。 搜索用户帐户并从结果中选择。
选择“查看 + 分配”以将策略分配给所选用户。
为主机名添加本地机密
在命令窗口中,在替换你的缓存名称和主访问密钥的占位符(包括尖括号)后,执行以下命令来存储名为 RedisHostName 的新机密:
dotnet user-secrets set RedisHostName "<cache-name>.redis.cache.windows.net"
若要使用 Azure 托管 Redis(预览版)实例,请存储名为 RedisHostName 的新机密,如下所示:
dotnet user-secrets set RedisHostName "<cache-name>.<region>.redis.azure.net"
使用 RedisConnection 连接到缓存
RedisConnection
类可管理与缓存的连接。 连接是通过 Controllers 文件夹中 HomeController.cs
内的以下语句建立的:
_redisConnection = await _redisConnectionFactory;
RedisConnection.cs
类包括文件顶部的 StackExchange.Redis
和 Azure.Identity
命名空间,以包含连接到 Azure Cache for Redis 的基本类型。
using StackExchange.Redis;
using Azure.Identity;
RedisConnection
代码通过管理 StackExchange.Redis
中的 ConnectionMultiplexer
实例来确保始终与缓存建立正常的连接。 连接丢失且无法自动重新连接时,RedisConnection
类会重新创建该连接。
有关详细信息,请参阅 StackExchange.Redis 和 GitHub 存储库中的代码。
示例中的布局视图
此示例的主页布局存储在 _Layout.cshtml 文件中。 在此页中,可以通过单击“Azure Cache for Redis 测试”来启动实际的缓存测试。
打开 Views\Shared\_Layout.cshtml。
在
<div class="navbar-header">
中应会看到:<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="RedisCache">Azure Cache for Redis Test</a>
显示缓存中的数据
在主页中,选择“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>
在本地运行应用
在命令窗口中执行以下命令来生成应用:
dotnet build
然后,使用以下命令来运行应用:
dotnet run
在 Web 浏览器中浏览到
https://localhost:5001
。在网页的导航栏中选择“Azure Cache for Redis 测试”,以测试缓存访问。
清理资源
要继续使用在本文中创建的资源,请保留资源组。
否则,如果已完成资源,可以删除创建的 Azure 资源组以避免产生费用。
重要
删除资源组的操作不可逆。 删除资源组时,包含在其中的所有资源会被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组(其中包含要保留的资源)内创建了此资源,可以逐个删除这些资源,而不是删除资源组。
删除资源组的步骤
登录到 Azure 门户,然后选择“资源组”。
选择要删除的资源组。
如果有多个资源组,请使用“筛选任何字段...”框,键入为本文创建的资源组的名称。 在结果列表中选择资源组。
选择“删除资源组”。
系统会要求确认是否删除资源组。 键入资源组的名称进行确认,然后选择“删除”。
片刻之后,将会删除该资源组及其所有资源。