你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
什么是 Azure 托管 Redis(预览版)?
Azure 托管 Redis(预览版)提供基于 Redis Enterprise 软件的内存中数据存储。 Redis Enterprise 提高了 Redis 社区版的性能和可靠性,同时有兼容性。 Microsoft 操作该服务,在 Azure 中托管,可由 Azure 内外的任何应用程序使用。 有关如何生成 Azure 托管 Redis 的详细信息,请参阅 Azure 托管 Redis 体系结构。
重要
Azure 托管 Redis 目前以预览版提供。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
Azure 托管 Redis 可以改善大量使用后端数据存储的应用程序的性能和可伸缩性。 它将经常访问的数据保留在可快速读写的服务器内存中,从而能够处理大量应用程序请求。
Redis 为新式应用程序带来了关键的低延迟、高吞吐量数据存储解决方案。 此外,Redis 越来越多地用于非缓存的应用领域,包括数据引入、删除重复、消息传送、排行榜、语义缓存以及作为向量数据库。
Azure 托管 Redis 可以独立部署,也可以与其他 Azure 应用或数据库服务一起部署,例如 Azure 容器应用、Azure 应用服务、Azure Functions、Azure SQL 或 Azure Cosmos DB。
关键方案
Azure 托管 Redis 通过支持常见的应用程序体系结构模式来提高应用程序性能。 部分最常用的模式如下所示:
模式 | 说明 |
---|---|
数据缓存 | 数据库通常很大,无法直接加载到缓存中。 通常是使用缓存端模式,只在需要时才将数据加载到缓存中。 系统对数据进行更改时,还会同时更新缓存,然后将缓存分发给其他客户端。 另外,系统还可以设置数据的过期时间,或者使用逐出策略触发对缓存的数据更新。 |
内容缓存 | 许多网页都是基于使用静态内容(例如页眉、页脚、横幅)的模板生成的。 这些静态项不应经常更改。 与后端数据存储相比,使用内存中缓存可以快速地访问静态内容。 此模式降低了处理时间和服务器负载,使 Web 服务器能够更快地做出响应。 这可减少处理负载所需的服务器数量。 Azure 托管 Redis 提供 Redis 输出缓存提供程序,支持对 ASP.NET 使用此模式。 |
会话存储 | 此模式通常用于购物车和其他用户历史记录数据,Web 应用程序可能将此类信息与用户 Cookie 相关联。 在 Cookie 中存储过多内容可能会对性能造成负面影响,因为 Cookie 会变大,并且每次请求都需要传递和验证 Cookie。 常用解决方案是使用 Cookie 作为键来查询数据库中的数据。 使用内存中缓存(例如 Azure 托管 Redis)将信息与用户关联比和整个关系数据库进行交互更快。 |
矢量相似性搜索 | 常见的 AI 用例是使用大型语言模型 (LLM) 生成矢量嵌入。 这些矢量嵌入需要存储在矢量数据库中,然后进行比较,用于确定相似性。 Azure 托管 Redis 具有用于存储和比较高吞吐量时的矢量嵌入的内置功能。 |
语义缓存 | 使用 LLM 通常会给应用程序带来大量的延迟(由于生成时间)和成本(由于按令牌收费)。 缓存可以通过存储 LLM 过去的输出,以便再次快速检索,来帮助解决这些问题。 但是,由于 LLM 使用自然语言,通常的缓存难以应对。 Azure 托管 Redis 等语义缓存不仅能够缓存特定查询,还可以缓存查询的语义含义,从而可以更自然地与 LLM 一起使用。 |
重复数据删除 | 通常,你需要确定系统中是否已发生操作,例如确定某用户名是否已占用或客户是否已发送电子邮件。 在 Azure 托管 Redis 中,Bloom 筛选器可用于快速确定重复项并防止发生问题。 |
排行榜 | Redis 为使用排序集数据结构开发各类排行榜提供了简单而强大的支持。 此外,使用活动异地复制可以让全球共享一个排行榜。 |
作业和消息队列 | 当需要花费时间来执行与请求相关联的操作时,应用程序通常将任务添加到队列中。 长时间运行的操作将排队等待按顺序处理,通常由另一服务器进行处理。 这种将工作推迟的方法称为任务队列。 Azure 托管 Redis 提供了一个分布式队列,该队列可以在应用程序中启用此模式。 |
分布式事务 | 有时候,应用程序需要将针对后端数据存储的一系列命令作为单个原子操作来执行。 所有命令都必须成功,否则,所有命令都必须回退到初始状态。 Azure 托管 Redis 支持将一批命令作为单个事务来执行。 |
Redis 版本
Azure 托管 Redis 支持 Redis 版本 7.4.x。 有关详细信息,请参阅如何升级 Azure 托管 Redis 实例的版本。
选择正确的层
Azure 托管 Redis 有四个可用层,每个层都具有不同的性能特征和价格级别。
有三个层适用于内存中数据:
- 内存优化:非常适合需要高内存与 vCPU 比率 (8:1) 但不需要最高吞吐量性能的内存密集型用例。 对于处理能力或吞吐量要求较低的场景,该层提供了更低的价格点,是开发和测试环境的理想选择。
- 均衡(内存+计算):提供均衡的内存与 vCPU 比率 (4:1),是标准工作负载的理想选择。 该层能够很好地均衡内存与计算资源。
- 计算优化:专为需要最大吞吐量的高性能工作负载设计,具有较低的内存与 vCPU 比率 (2:1)。 该层非常适合需要最高性能的应用程序。
有一个层将数据同时存储在内存和磁盘中:
- 闪存优化:使 Redis 群集能够自动将不常访问的数据从内存 (RAM) 移至 NVMe 存储。 这会降低性能,但可以对具有大数据集的缓存进行具有成本效益的缩放。
注意
有关如何构建闪存优化层的详细信息,请参阅 Azure 托管 Redis 体系结构
重要
还可以使用数据持久化功能为内存中层存储磁盘上的数据。 数据持久化存储磁盘上数据的备份副本,以便在发生意外服务中断时快速恢复。 这不同于闪存优化层,该层为存储磁盘上用于通常操作的数据而打造。 使用闪存优化层在磁盘上存储某些数据不会增加数据复原能力。 你还可以在闪存优化层上使用数据持久化。
有关如何在层和 SKU 之间缩放的说明,请参阅缩放 Azure 托管 Redis 实例。
层和 SKU 概览
有关定价信息,请参阅 Azure 托管 Redis 定价
功能对比
下表介绍了每个层支持的部分功能:
功能说明 | 内存优化 | Balanced | 计算优化 | 闪存优化 |
---|---|---|---|---|
大小(GB) | 12 - 1920 | 0.5 - 960 | 3 - 720 | 250 - 4500 |
服务级别协议 (SLA) | 是 | 是 | 是 | 是 |
传输中的数据加密 | 是(专用终结点) | 是(专用终结点) | 是(专用终结点) | 是(专用终结点) |
复制和故障转移 | 是 | 是 | 是 | 是 |
网络隔离 | 是 | 是 | 是 | 是 |
基于 Microsoft Entra ID 的身份验证 | 是 | 是 | 是 | 是 |
缩放 | 是 | 是 | 是 | 是 |
数据持久性 | 是 | 是 | 是 | 是 |
区域冗余 | 是 | 是 | 是 | 是 |
异地复制 | 是(主动) | 是(主动) | 是(主动) | 否 |
连接审核日志 | 是(基于事件) | 是(基于事件) | 是(基于事件) | 是(基于事件) |
JSON 数据结构(即 Redis JSON) | 是 | 是 | 是 | 是 |
搜索功能(包括矢量搜索) | 是 | 是 | 是 | 否 |
概率数据结构(即 Redis Bloom) | 是 | 是 | 是 | 是 |
时序数据库功能(即 Redis TimeSeries) | 是 | 是 | 是 | 是 |
Redis on Flash(也称为自动分层) | 是 | 是 | 是 | 是 |
导入/导出 | 是 | 是 | 是 | 是 |
更新通道和计划更新 | 否 | No | No | 否 |
重要
平衡 B0 和 B1 SKU 选项不支持活动异地复制。
重要
SLA 仅在正式版中可用,在预览版中不可用。
注意
在某些情况下,纵向缩减支持有限。 有关详细信息,请参阅缩放 Azure 托管 Redis 的先决条件/限制。
选择层时的其他注意事项
- 网络性能:如果工作负载需要高吞吐量,则网络带宽可能会遇到瓶颈。 可以通过提升到更高的性能层或移动到大型实例来增加带宽。 因为基础 VM 托管着缓存,所以缓存大小越大,带宽越高。 更高的带宽限制有助于避免导致应用程序中超时的网络饱和。 有关带宽性能的详细信息,请参阅性能测试
- 最大客户端连接数:每个 SKU 的最大客户端连接数。 此上限随着更高的性能层和更大的实例大小而增加。 有关每个 SKU 的限制的详细信息,请参阅 Azure 托管 Redis 定价。
- 高可用性:Azure 托管 Redis 提供了多个高可用性选项。 SLA 仅涉及与缓存终结点的连接。 SLA 不涉及对数据丢失的防护。 有关 SLA 的详细信息,请参阅 SLA。 可以在 Azure 托管 Redis 实例中禁用高可用性。 这会降低价格,但会导致数据丢失和停机。 我们仅建议禁用开发/测试场景中的高可用性。
其他定价注意事项
重要
Azure 托管 Redis Enterprise 需要每个缓存实例的 IP 地址。 目前,IP 地址费用由 Azure 托管 Redis 承担,不会传递给客户。 在将来,这可能会有变化。 有关详细信息,请参阅 IP 地址定价。
重要
使用活动异地复制将在 Azure 区域之间生成数据传输。 这些带宽费用目前由 Azure 托管 Redis 承担,不会传递给客户。 在将来,这可能会有变化。 有关详细信息,请参阅带宽定价。
按区域列出的可用性
Azure 托管 Redis 正在不断扩展到新区域。 若要查看它的区域可用性,请参阅各区域的产品可用性。
从 Azure Cache for Redis 迁移
有关从 Azure Cache for Redis 迁移到 Azure 托管 Redis 的详细信息,请参阅从 Azure Cache for Redis 迁移到 Azure 托管 Redis