Azure 管理的 Redis 基于 Redis Enterprise 软件提供内存数据存储。 Redis Enterprise 提高了 Redis 社区版的性能和可靠性,同时有兼容性。 Microsoft 操作该服务,在 Azure 中托管,可由 Azure 内外的任何应用程序使用。 有关如何生成 Azure 托管 Redis 的详细信息,请参阅 Azure 托管 Redis 体系结构。
注意
Azure 托管的 Redis 已作为产品正式发布 (GA)。 但是,某些功能仍为公共预览版。
- 缩放缓存
- 数据持久性
- 非群集缓存
Azure 托管 Redis 可以改善大量使用后端数据存储的应用程序的性能和可伸缩性。 它可以通过在服务器内存中保留经常访问的数据来处理大量应用程序请求,这些数据可以快速写入和读取。
Redis 为新式应用程序带来了关键的低延迟、高吞吐量数据存储解决方案。 此外,Redis 越来越多地用于非缓存应用程序,包括数据引入、重复数据删除、消息传送、 排行榜、语义缓存以及作为 向量数据库。
Azure 托管 Redis 可以独立部署,也可以与其他 Azure 应用或数据库服务一起部署,例如 Azure 容器应用、Azure 应用服务、Azure Functions、Azure SQL 或 Azure Cosmos DB。
Azure 托管 Redis 通过支持常见的应用程序体系结构模式来提高应用程序性能。 部分最常用的模式如下所示:
图案 | DESCRIPTION |
---|---|
数据缓存 | 数据库通常很大,无法直接加载到缓存中。 通常是使用缓存端模式,只在需要时才将数据加载到缓存中。 系统对数据进行更改时,还会同时更新缓存,然后将缓存分发给其他客户端。 另外,系统还可以设置数据的过期时间,或者使用逐出策略触发对缓存的数据更新。 |
内容缓存 | 许多网页都是基于使用静态内容(例如页眉、页脚、横幅)的模板生成的。 这些静态项不应经常更改。 与后端数据存储相比,使用内存中缓存可以快速地访问静态内容。 此模式降低了处理时间和服务器负载,使 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 提供了一个分布式队列,该队列可以在应用程序中启用此模式。 |
PowerBI/Analytics 加速 | 可以使用 Redis ODBC 驱动程序将 Redis 用于 BI、报告和分析用例。 由于 Redis 通常比关系数据库快得多,因此以这种方式使用 Redis 可以显著提高查询响应能力。 |
分布式事务 | 有时候,应用程序需要将针对后端数据存储的一系列命令作为单个原子操作来执行。 所有命令都必须成功,否则,所有命令都必须回退到初始状态。 Azure 托管 Redis 支持将一批命令作为单个事务来执行。 |
Azure 托管 Redis 支持 Redis 版本 7.4.x。 有关详细信息,请参阅如何升级 Azure 托管 Redis 实例的版本。
Azure 托管 Redis 有四个可用层级,每个层级都具有不同的性能特征和价格级别。
有三个层级适用于内存中数据:
重要
使用超过 120 GB 存储的所有内存中层都处于公共预览状态,包括内存优化 M150 及更高版本;平衡 B150 及更高版本;和计算优化 X150 及更高版本。 所有这些层及更高版本均以公共预览版提供。
所有闪存优化层均以公共预览版提供。
- 内存优化:非常适合需要高内存与 vCPU 比率 (8:1) 但不需要最高吞吐量性能的内存密集型用例。 对于处理能力或吞吐量要求较低的场景,该层提供了更低的价格点,是开发和测试环境的理想选择。
- 均衡(内存+计算):提供均衡的内存与 vCPU 比率 (4:1),是标准工作负载的理想选择。 该层能够很好地均衡内存与计算资源。
- 计算优化:专为需要最大吞吐量的高性能工作负载设计,具有较低的内存与 vCPU 比率 (2:1)。 该层非常适合需要最高性能的应用程序。
有一个层将数据同时存储在内存和磁盘中:
- Flash Optimized (预览版) 使 Redis 群集能够自动将不太频繁访问的数据从内存(RAM)移到 NVMe 存储。 这会降低性能,但可以在大数据集的缓存中进行具有成本效益的扩展。
注意
有关如何构建闪存优化层的详细信息,请参阅 Azure 托管 Redis 体系结构
重要
您还可以使用 数据暂留(预览) 功能将内存层的数据存储到磁盘上。 如果遇到意外中断,数据持久性会存储磁盘上的数据的备份副本,以便快速恢复。 这不同于闪存优化层,该层为存储磁盘上用于通常操作的数据而打造。 使用 Flash Optimized 层在磁盘上存储某些数据不会增加数据复原能力。 还可以在 Flash Optimized 层使用数据持久性功能。
有关如何在层和 SKU 之间缩放的说明,请参阅 Azure 托管 Redis 实例的缩放(预览版)。
有关定价信息,请参阅 Azure 托管 Redis 定价
下表介绍了每个层支持的部分功能:
功能说明 | 内存优化 | 均衡 | 计算优化 | 闪存优化 |
---|---|---|---|---|
大小(GB) | 12 - 1920 | 0.5 - 960 | 3 - 720 | 250 - 4500 |
服务级别协议 (SLA) | 是的 | 是的 | 是的 | 是的 |
传输中数据加密 | 是(专用终结点) | 是(专用终结点) | 是(专用终结点) | 是(专用终结点) |
复制和故障转移 | 是的 | 是的 | 是的 | 是的 |
网络隔离 | 是的 | 是的 | 是的 | 是的 |
基于 Microsoft Entra ID 的身份验证 | 是的 | 是的 | 是的 | 是的 |
缩放(预览版) | 是的 | 是的 | 是的 | 是的 |
数据持久性(预览版) | 是的 | 是的 | 是的 | 是的 |
区域冗余 | 是的 | 是的 | 是的 | 是的 |
异地复制 | 是(主动) | 是(主动) | 是(主动) | 否 |
非群集实例(预览版) | 是的 | 是的 | 是的 | 否 |
连接审核日志 | 是(基于事件) | 是(基于事件) | 是(基于事件) | 是(基于事件) |
JSON 数据结构(即 Redis JSON) | 是的 | 是的 | 是的 | 是的 |
搜索功能(包括矢量搜索) | 是的 | 是的 | 是的 | 否 |
概率数据结构(即 Redis Bloom) | 是的 | 是的 | 是的 | 是的 |
时序数据库功能(即 Redis TimeSeries) | 是的 | 是的 | 是的 | 是的 |
导入/导出 | 是的 | 是的 | 是的 | 是的 |
重要
B0 和 B1 SKU 的平衡选项不支持主动地理复制。
注意
在某些情况下,纵向缩减支持有限。 有关详细信息,请参阅 缩放 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 正在不断扩展到新区域。
美洲
- 巴西南部
- 巴西东南部
- 加拿大中部
- 加拿大东部
- 美国中部
- 美国东部
- 美国东部 2
- 墨西哥中部
- 美国中北部
- 美国中南部
- 美国中西部
- 美国西部
- 西部美国 2
- 美国西部 3
欧洲
- 法国南部
- 德国北部
- 德国中西部
- 意大利北部
- 挪威东部
- 挪威西部
- 西班牙中部
- 瑞典中部
- 瑞典南部
- 瑞士北部
- 瑞士西部
- 英国南部
- 英国西部
- 西欧
中东
- 以色列中部
- 阿联酋中部
- 阿拉伯联合酋长国北部
非洲
- 南非北部
- 南非西部
亚太区
- 东亚
- 澳大利亚中部
- 澳大利亚中部 2
- 澳大利亚东部
- 澳大利亚东南
- 印度中部
- 印度尼西亚中部
- 日本东部
- 日本西部
- Jio 印度中部
- Jio 印度西部
- 韩国中部
- 韩国南部
- 东南亚
- 印度南部
- 台湾北部
- 台湾西北
若要查看它的区域可用性,请参阅各区域的产品可用性。
有关从 Azure Redis 缓存迁移到 Azure 托管 Redis 的详细信息,请参阅 从 Azure Redis 缓存迁移到 Azure 托管 Redis。