快速入门:将 Azure Cache for Redis 与 ASP.NET Core Web 应用配合使用

在本快速入门中,我们将 Azure Cache for Redis 引入到一个 ASP.NET Core Web 应用程序中,该应用程序会连接到 Azure Cache for Redis 以在缓存中存储和获取数据。

可以在 ASP.NET Core Web 应用中使用缓存提供程序。 若要快速开始使用 Redis,对现有代码进行最少更改,请参阅:

跳到代码

本文介绍如何修改示例应用的代码,以创建连接到 Azure Cache for Redis 的工作应用。

若要直接转到代码,请参阅 GitHub 上的 ASP.NET Core 快速入门示例

可以克隆 Azure Cache for Redis 示例 GitHub 存储库,然后转到 quickstart/aspnet-core 目录,查看本文中所述步骤的完整源代码。

quickstart/aspnet-core 目录还配置为 Azure Developer CLI 模板。 使用开源 azd 工具简化从本地环境到 Azure 的预配和部署。 (可选)运行 azd up 命令以自动预配 Azure Cache for Redis 实例,并配置本地示例应用以连接到它:

azd up

浏览 eShop 示例

在下一步,你会看到演示 ASP.NET Core 缓存提供程序的现实方案 eShop 应用程序:使用 Redis 缓存提供程序的 ASP.NET Core eShop

功能包括:

  • Redis 分布式缓存
  • Redis 会话状态提供程序

部署说明位于 GitHub 上的 ASP.NET Core 快速入门示例README.md 文件中。

先决条件

创建缓存

  1. 若要创建缓存,请登录到 Azure 门户并选择“创建资源”

    左侧导航窗格中突出显示了“创建资源”。

  2. 在“入门”页上的搜索框中键入“Azure Cache for Redis”。 然后选择创建

    Azure 市场的屏幕截图,其中的搜索框中包含“Azure Cache for Redis”,并用红色框突出显示了“创建”。

  3. 在“新建 Redis 缓存”页上配置缓存的设置。

    设置 选择值 说明
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名<DNS 名称>.redis.cache.windows.net
    位置 单击下拉箭头并选择一个位置。 选择使用缓存的其他服务附近的区域
    缓存 SKU 打开下拉列表并选择一个 SKU 此 SKU 决定可用于缓存的大小、性能和功能参数。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
    缓存大小 打开下拉列表并选择缓存的大小 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
  4. 选择网络选项卡,或选择网络按钮(位于页面底部) 。

  5. 网络选项卡中,选择你的连接方法。

  6. 选择“下一步: 高级”选项卡,或选择页面底部的“下一步: 高级”按钮,以查看“高级”选项卡。

    显示工作窗格中的“高级”选项卡和可供选择选项的屏幕截图。

  7. 选中此复选框以启用 Microsoft Entra 身份验证

    重要

    为了获得最佳安全性,Microsoft 建议尽可能使用 Microsoft Entra ID 和托管标识来授权针对缓存的请求。 与共享密钥授权相比,使用 Microsoft Entra ID 和托管标识进行授权提供了更高的安全性和易用性。 有关将托管标识用于缓存的详细信息,请参阅使用 Microsoft Entra ID 进行缓存身份验证

  8. 选择“下一步: 标记”选项卡,或选择页面底部的“下一步: 标记”按钮

  9. 或者,在标记选项卡中,如果希望对资源分类,请输入名称或值。

  10. 选择查看 + 创建。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。

  11. 显示绿色的“已通过验证”消息后,选择创建

创建缓存需要一段时间。 可以在 Azure Cache for Redis 的概述页上监视进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。

获取主机名

若要连接到你的 Azure Cache for Redis 服务器,缓存客户端需要该缓存的主机名和其他信息。 在某些客户端中,这些项的名称可能略有不同。 可以在 Azure 门户中获取该主机名。

  1. 在 Azure 门户中转到自己的缓存。
  2. 在服务菜单中,选择“概述”。
  3. 在“Essentials”下,对于“主机名”,请选择“复制”图标以复制主机名值。 主机名值的形式为 <DNS name>.redis.cache.chinacloudapi.cn

显示 Azure Cache for Redis 属性的屏幕截图,其中突出显示主机名。

添加新的 Redis 用户访问策略

必须向访问 Azure Cache for Redis 的标识分配数据访问策略。 对于此示例,将数据访问策略分配给用于登录到 Azure CLI 或 Visual Studio 的同一 Microsoft Entra ID 帐户。

  1. 在 Azure 门户中转到自己的缓存。

  2. 在服务菜单中的“设置”下,选择“数据访问配置”

  3. 在“数据访问配置”窗格中,选择“添加”>“新建 Redis 用户”

    显示数据访问配置窗格的屏幕截图,其中突出显示了“新建 Redis 用户”。

  4. 在“新建 Redis 用户”窗格上,选择“数据参与者”策略,然后选择“下一步:Redis 用户”

  5. 选择“选择成员”,打开浮出控件菜单。 搜索用户帐户并在结果中选择。

    显示“新建 Redis 用户”窗格上的“Redis 用户”选项卡的屏幕截图,其中突出显示“选择成员”。

  6. 选择“查看 + 分配”以将策略分配给所选用户

为主机名添加本地机密

在命令窗口中,运行以下命令来存储名为“RedisHostName”的新机密。 在代码中,将占位符(包括尖括号)替换为你的缓存名称和主访问密钥:

dotnet user-secrets set RedisHostName "<cache-name>.redis.cache.chinacloudapi.cn"

使用 RedisConnection 连接到缓存

RedisConnection 类可管理与缓存的连接。 连接是通过“控制器”文件夹中 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 以及 StackExchange.Redis GitHub 存储库中的代码。

验证示例中的布局视图

此示例的主页布局存储在 _Layout.cshtml 文件中。 在下一节中,你要使用在此处添加的控制器测试缓存。

  1. 打开 Views\Shared\_Layout.cshtml

  2. 验证以下行是否在 <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 测试”,以查看示例输出

  1. 在解决方案资源管理器中,展开“视图”文件夹,并右键单击“主页”文件夹。

  2. 验证以下代码是否在 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>
    

在本地运行应用

  1. 在命令提示符窗口中使用以下命令生成应用:

    dotnet build
    
  2. 使用以下命令运行应用:

    dotnet run
    
  3. 在 Web 浏览器中转到 https://localhost:5001

  4. 在网页导航栏上,选择“Azure Cache for Redis 测试”以测试缓存访问

屏幕截图显示在本地完成的简单测试。

清理资源

要继续使用在本文中创建的资源,请保留资源组。

否则,为了避免与资源相关的费用,若已用完资源,可以删除已创建的 Azure 资源组。

警告

删除资源组的操作不可逆。 删除一个资源组时,该资源组中的所有资源都会被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组内创建了资源,并且该资源组中还有想要保留的资源,可以逐个删除这些资源,而不是删除资源组。

删除资源组

  1. 登录到 Azure 门户,然后选择“资源组”。

  2. 选择要删除的资源组。

    如果有多个资源组,请在“筛选任何字段”中,输入为完成本文创建的资源组的名称。 在搜索结果列表中,选择该资源组。

    屏幕截图显示了可从中选择要删除的资源组列表。

  3. 选择“删除资源组”

  4. 在“删除资源组”窗格中,输入资源组的名称进行确认,然后选择“删除”。

    屏幕截图显示了要求输入资源名称以确认删除的框。

很快将会删除该资源组及其所有资源。