你当前正在访问 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 中。

先决条件

创建缓存

  1. 若要创建缓存,请登录到 Azure 门户。 在门户菜单上,选择“创建资源”。

    屏幕截图显示在 Azure 门户的左侧导航窗格上突出显示的“创建资源”选项。

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

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

  3. 在“新建 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 概述
  4. 选择“网络”选项卡,或选择“下一步:网络”。

  5. 在“网络”选项卡上,选择用于缓存的连接方法。

  6. 选择“高级”选项卡,或者选择“下一步:高级”

  7. 在“高级”选项卡上,选中“Microsoft Entra 身份验证”复选框以启用 Microsoft Entra 身份验证。

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

    重要

    为了获得最佳安全性,我们建议你在可能的情况下使用 Microsoft Entra ID 和托管标识来授权针对缓存的请求。 与共享访问密钥授权相比,使用 Microsoft Entra ID 和托管标识进行授权提供了更高的安全性和易用性。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证

  8. (可选)选择“标记”选项卡或选择“下一步: 标记”。

  9. (可选)如果希望对缓存资源进行分类,请在“标记”选项卡中输入标记名称和值。

  10. 选择“查看 + 创建”按钮。

    在“查看 + 创建”选项卡上,Azure 会自动验证你的配置。

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

新的缓存部署需要几分钟的时间。 可以在 Azure Cache for Redis 的“概述”窗格上监视部署进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。

对缓存使用 Microsoft Entra ID 身份验证

Azure Redis 缓存(Enterprise 和 Enterprise Flash 层除外)默认启用了 Microsoft Entra 身份验证。 默认已禁用访问密钥。

重要

Microsoft 建议使用 Microsoft Entra ID 身份验证来获得最安全的身份验证体验,而不要使用密码或访问密钥。 本文本部分中所述的身份验证使用访问密钥,这需要高度信任应用程序,并且这种方法会带来风险,而使用 Microsoft Entra ID 则不存在这种风险。 请仅在 Microsoft Entra ID 身份验证不可行时才使用本文档中所述的方法。

  1. 在 Azure 门户中,选择你要在其中使用基于 Microsoft Entra 令牌的身份验证的缓存。

  2. 从“资源”菜单中选择“身份验证”。

  3. 选择“选择成员”并输入有效用户的名称。 选择“保存”时,系统会自动向你输入的用户默认分配数据所有者访问策略。 还可输入托管标识或服务主体以连接到缓存实例。

    该屏幕截图显示已在资源菜单中选择身份验证且已勾选“启用 Microsoft Entra 身份验证”。

有关如何将 Microsoft Entra ID 与 Azure CLI 配合使用的信息,请参阅标识参考页面

添加 Redis 访问策略

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

  1. 在缓存中选择“设置”资源菜单,然后选择“数据访问配置”

  2. 在“数据访问配置”页上,从顶部导航栏中选择“添加”>“新 Redis 用户”

    显示数据访问配置屏幕的屏幕截图。

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

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

    显示工作窗格中的 Redis 用户选项卡的屏幕截图,其中选择的成员以红色框突出显示。

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

为主机名添加本地机密

在命令窗口中,在替换你的缓存名称和主访问密钥的占位符(包括尖括号)后,执行以下命令来存储名为 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.RedisAzure.Identity 命名空间,以包含连接到 Azure Cache for Redis 的基本类型。

using StackExchange.Redis;
using Azure.Identity;

RedisConnection 代码通过管理 StackExchange.Redis 中的 ConnectionMultiplexer 实例来确保始终与缓存建立正常的连接。 连接丢失且无法自动重新连接时,RedisConnection 类会重新创建该连接。

有关详细信息,请参阅 StackExchange.RedisGitHub 存储库中的代码。

示例中的布局视图

此示例的主页布局存储在 _Layout.cshtml 文件中。 在此页中,可以通过单击“Azure Cache for Redis 测试”来启动实际的缓存测试。

  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. 在“解决方案资源管理器”中,展开“Views”文件夹,并右键单击“Home”文件夹。

  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. 系统会要求确认是否删除资源组。 键入资源组的名称进行确认,然后选择“删除”。

    显示需要资源名称才能确认删除的表单的屏幕截图。

片刻之后,将会删除该资源组及其所有资源。