你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
什么是 Azure Redis 缓存?
Azure Cache for Redis 基于 Redis 软件提供内存中数据存储。 Redis 改善了大量使用后端数据存储的应用程序的性能和可伸缩性。 它将经常访问的数据保留在可快速读写的服务器内存中,从而能够处理大量应用程序请求。 Redis 为新式应用程序带来了关键的低延迟、高吞吐量数据存储解决方案。
Azure Cache for Redis 提供 Redis 开放源代码 (OSS Redis),还提供 Redis Inc. 的一款商业产品 (Redis Enterprise) 作为托管服务。 它提供安全的专用 Redis 服务器实例,且完全兼容 Redis API。 Microsoft 操作该服务,在 Azure 中托管,可由 Azure 内外的任何应用程序使用。
Azure Cache for Redis 可用作分布式数据或内容缓存、会话存储和消息中转站等。 它可以单独部署。 或者,它也可以与其他 Azure 数据库服务(如 Azure SQL 或 Azure Cosmos DB)一起部署。
关键方案
Azure Cache for Redis 通过支持常见的应用程序体系结构模式来提高应用程序性能。 部分最常用的模式如下所示:
模式 | 说明 |
---|---|
数据缓存 | 数据库通常很大,无法直接加载到缓存中。 通常是使用缓存端模式,只在需要时才将数据加载到缓存中。 系统对数据进行更改时,还会同时更新缓存,然后将缓存分发给其他客户端。 另外,系统还可以设置数据的过期时间,或者使用逐出策略触发对缓存的数据更新。 |
内容缓存 | 许多网页都是基于使用静态内容(例如页眉、页脚、横幅)的模板生成的。 这些静态项不应经常更改。 与后端数据存储相比,使用内存中缓存可以快速地访问静态内容。 此模式降低了处理时间和服务器负载,使 Web 服务器能够更快地做出响应。 这可减少处理负载所需的服务器数量。 Azure Cache for Redis 提供 Redis 输出缓存提供程序,支持对 ASP.NET 使用此模式。 |
会话存储 | 此模式通常用于购物车和其他用户历史记录数据,Web 应用程序可能将此类信息与用户 Cookie 相关联。 在 Cookie 中存储过多内容可能会对性能造成负面影响,因为 Cookie 会变大,并且每次请求都需要传递和验证 Cookie。 常用解决方案是使用 Cookie 作为键来查询数据库中的数据。 如果使用内存中缓存(例如 Azure Redis 缓存),将信息与用户关联比和整个关系数据库进行交互更快。 |
作业和消息队列 | 当需要花费时间来执行与请求相关联的操作时,应用程序通常将任务添加到队列中。 长时间运行的操作将排队等待按顺序处理,通常由另一服务器进行处理。 这种将工作推迟的方法称为任务队列。 Azure Cache for Redis 提供了一个分布式队列,用以在应用程序中启用此模式。 |
分布式事务 | 有时候,应用程序需要将针对后端数据存储的一系列命令作为单个原子操作来执行。 所有命令都必须成功,否则,所有命令都必须回退到初始状态。 Azure Cache for Redis 支持将一批命令作为单个事务来执行。 |
Redis 版本
Azure Cache for Redis 支持 OSS Redis 版本 4.0.x 和 6.0.x。 我们决定跳过 Redis 5.0,为你提供最新版本。 以前,Azure Cache for Redis 维护一个 Redis 版本。 以后,可以从一个较新的主要版本升级,以及至少一个较旧的稳定版本中进行选择。 可以选择最适合你的应用程序的版本。
服务层
Azure Cache for Redis 在下面各层中提供:
层 | 说明 |
---|---|
基本 | 在单个 VM 上运行的 OSS Redis 缓存。 此层不提供服务级别协议 (SLA),因此非常适用于开发/测试和非关键工作负载。 |
标准 | 在配置完全相同的两个 VM 上运行的 OSS Redis 缓存。 |
高级 | 高性能 OSS Redis 缓存。 该层提供更高的吞吐量、更低的延迟、更好的可用性和更多功能。 与基本或标准缓存相比,高级缓存部署在功能更强大的 VM 上。 |
Enterprise | 高性能缓存由 Redis Inc. 的 Redis Enterprise 软件提供支持。 该层支持 Redis 模块,包括 RediSearch、RedisBloom、RedisJSON 和 RedisTimeSeries。 此外,它甚至提供比高级层更高的可用性。 |
Enterprise Flash | 经济高效的大型缓存由 Redis Inc. 的 Redis Enterprise 软件提供支持。 此层将 Redis 数据存储扩展到 VM 上的非易失性存储器,其价格低于 DRAM。 它总体上降低了每 GB 内存的成本。 |
功能比较
Azure Cache for Redis 定价提供了每个层的详细比较。 下表介绍了每个层支持的部分功能:
功能说明 | 基本 | 标准 | 高级 | Enterprise | Enterprise Flash |
---|---|---|---|---|---|
服务级别协议 (SLA) | 否 | 是 | 是 | 是 | 是 |
传输中的数据加密 | 是 | 是 | 是 | 是 | 是 |
网络隔离 | 是 | 是 | 是 | 是 | 是 |
缩放 | 是 | 是 | 是 | 是 | 是 |
OSS 群集 | 否 | No | 是 | 是 | 是 |
数据持久性 | 否 | No | 是 | 预览 | 预览 |
区域冗余 | 否 | 预览 | 预览 | 可用 | 可用 |
异地复制 | 否 | 否 | 是(被动) | 是(主动) | 是(主动) |
连接审核日志 | 否 | 否 | 是(基于投票) | 是(基于事件) | 是(基于事件) |
Redis 模块 | 否 | No | No | 是 | 预览 |
导入/导出 | 否 | No | 是 | 是 | 是 |
重新启动 | 是 | 是 | 是 | 否 | 否 |
更新通道和计划更新 | 是 | 是 | 是 | 否 | 否 |
注意
Enterprise Flash 层目前仅支持 RediSearch 模块(预览)和 RedisJSON 模块。
注意
Enterprise 和 Enterprise Flash 层目前仅支持纵向扩展和横向扩展。尚不支持纵向缩减和横向缩减。
选择正确的层
选择 Azure Cache for Redis 层时,请考虑以下选项:
- 内存:基本层和标准层提供 250 MB - 53 GB;高级层提供 6 GB - 1.2 TB;Enterprise 层提供 1 GB - 2 TB,Enterprise Flash 层提供 300 GB - 4.5 TB。 若要创建更大的缓存实例,可以使用横向扩展。有关详细信息,请参阅 Azure Redis 缓存定价。
- 性能:高级层和企业层中的缓存部署在处理器速度更快的硬件上,可提供比基本层或标准层更好的性能。 Enterprise 层对于大多数工作负载而言通常性能最佳,尤其是缓存实例较大时。 有关更多信息,请参阅性能测试。
- Redis 服务器的专用核心:C0 以外的所有缓存都运行专用 vCPU。 基本层、标准层和高级层运行开源 Redis,设计上只使用一个线程进行命令处理。 在这些层上,通常 vCPU 越多,吞吐量性能越高,因为 Azure Cache for Redis 使用其他 vCPU 来处理 I/O 或 OS 进程。 但是,为每个实例添加更多的 vCPU 可能不会提高线性性能。 在这些层中,横向扩展通常比纵向扩展更能提高性能。 Enterprise 层和 Enterprise Flash 层均基于 Redis Enterprise 运行,Redis Enterprise 能够为每个实例使用多个 vCPU,这也可以显著提高性能,使其优于其他层。 对于 Enterprise 层和 Enterprise Flash 层,建议在横向扩展之前进行纵向扩展。有关详细信息,请参阅分片和 CPU 使用率。
- 网络性能:如果工作负载需要较高的吞吐量,则可使用高级层或企业层,这两层可提供比基本层或标准层更高的带宽。 另外,在每个层中,缓存大小越大,带宽越高,因为是由基础 VM 托管缓存。 更高的带宽限制有助于避免导致应用程序中超时的网络饱和。 有关更多信息,请参阅性能测试。
- 客户端连接的最大数量:高级层和企业层提供的可以连接到 Redis 的客户端数量是最大的,缓存大小越大,连接数量越大。 群集会增加可用于群集缓存的总网络带宽量。
- 高可用性:Azure Cache for Redis 提供了多个高可用性选项。 它保证标准、高级或企业缓存的可用性符合我们的 SLA。 SLA 仅涉及与缓存终结点的连接。 SLA 不涉及对数据丢失的防护。 我们建议使用高级层和企业层中的 Redis 数据暂留功能来提高复原能力,防止数据丢失。
- 数据暂留:高级层和企业层可用于分别在 Azure 存储账户和托管磁盘中暂留缓存数据。 底层基础结构问题可能会导致潜在的数据丢失。 我们建议使用这些层中的 Redis 数据暂留功能来提高复原能力,防止数据丢失。 Azure Cache for Redis 同时提供 RDB 和 AOF(预览版)选项。 可通过 Azure 门户和 CLI 启用数据持久性。 对于高级层,请参阅如何为高级 Azure Cache for Redis 配置暂留。
- 网络隔离:Azure 专用链接和虚拟网络 (VNET) 部署为 Azure Cache for Redis 提供增强的安全性和流量隔离。 使用 VNet,可以进一步通过网络访问控制策略来限制访问。 有关详细信息,请参阅具有 Azure 专用链接的 Azure Cache for Redis 和如何为高级 Azure Cache for Redis 配置虚拟网络支持。
- Redis 模块:Enterprise 层支持 RediSearch、RedisBloom、RedisTimeSeries 和 RedisJSON。 这些模块向 Redis 添加了新的数据类型和功能。
创建缓存后,可以将其从基本层升级到高级层。 目前不支持纵向缩放到更低的层。 有关缩放的分步说明,请参阅如何缩放 Azure Chche for Redis 和如何缩放 - 基本层、标准层和高级层。
企业层的特殊注意事项
企业层依赖于 Redis Enterprise,这是 Redis Inc. 提供的商业变体产品。客户通过 Azure 市场产品/服务获取并支付此软件的许可证。 Azure Cache for Redis 将管理许可证获取,使你无需单独执行此操作。 若要在 Azure 市场中购买,必须具备以下先决条件:
- Azure 订阅具有有效的付款方式。 不支持 Azure 额度或免费 MSDN 订阅。
- 你的组织允许进行 Azure 市场购买。
- 如果你使用的是专用市场,它必须包含 Redis Inc. 企业产品/服务。
重要
Azure Cache for Redis Enterprise 需要标准网络负载均衡器,这些均衡器与缓存实例分开收费。 目前,这些费用由 Azure Cache for Redis 承担,不会转嫁给客户。 在将来,这可能会有变化。 有关详细信息,请参阅负载均衡器定价。
如果为多个可用性区域配置了企业缓存,则数据传输费用将由 Azure Cache for Redis 承担,不会转嫁给客户。 这在将来可能会更改,其中数据传输将按标准网络带宽费率计费
此外,数据持久性会添加托管磁盘。 在企业数据持久性功能的公共预览版期间,可免费使用这些资源。 该功能正式发布后,可能不再免费。
按区域列出的可用性
Azure Cache for Redis 正在不断扩展到新区域。 若要查看它的区域可用性,请参阅各区域的产品可用性。