什么是 Azure Redis 缓存?
Azure Cache for Redis 基于 Redis 软件提供内存中数据存储。 Redis 改善了大量使用后端数据存储的应用程序的性能和可伸缩性。 它将经常访问的数据保留在可快速读写的服务器内存中,从而能够处理大量应用程序请求。 Redis 为新式应用程序带来了关键的低延迟、高吞吐量数据存储解决方案。
Azure Cache for Redis 以托管服务的形式提供开源 Redis (OSS Redis)。 它提供安全的专用 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 上。 |
功能比较
Azure Cache for Redis 定价提供了每个层的详细比较。 下表介绍了每个层支持的部分功能:
功能说明 | 基本 | 标准 | 高级 |
---|---|---|---|
服务级别协议 (SLA) | 否 | 是 | 是 |
传输中的数据加密 | 是 | 是 | 是 |
网络隔离 | 是 | 是 | 是 |
缩放 | 是 | 是 | 是 |
OSS 群集 | 否 | No | 是 |
数据持久性 | 否 | No | 是 |
区域冗余 | 否 | 预览 | 预览 |
异地复制 | 否 | 否 | 是(被动) |
连接审核日志 | 否 | 否 | 是(基于投票) |
Redis 模块 | 否 | No | 否 |
导入/导出 | 否 | No | 是 |
重新启动 | 是 | 是 | 是 |
更新通道和计划更新 | 是 | 是 | 是 |
选择正确的层
选择 Azure Cache for Redis 层时,请考虑以下选项:
- 内存:基本层和标准层提供 250 MB - 53 GB;高级层提供 6 GB - 1.2 TB;要创建更大容量的缓存实例,可以使用横向扩展。有关详细信息,请参阅 Azure Redis 缓存定价。
- 性能:相较于基本层或标准层,高级层中的缓存部署在处理器速度更快且性能更高的硬件上。 有关更多信息,请参阅性能测试。
- Redis 服务器的专用核心:C0 以外的所有缓存都运行专用 vCPU。 基本层、标准层和高级层运行开源 Redis,设计上只使用一个线程进行命令处理。 在这些层上,通常 vCPU 越多,吞吐量性能越高,因为 Azure Cache for Redis 使用其他 vCPU 来处理 I/O 或 OS 进程。 但是,为每个实例添加更多的 vCPU 可能不会提高线性性能。 在这些层中,横向扩展通常比纵向扩展更能提高性能。
- 网络性能:如果你的工作负载需要较高的吞吐量,你可以使用高级层,该层提供比基本层或标准层更高的带宽。 另外,在每个层中,缓存大小越大,带宽越高,因为是由基础 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 配置虚拟网络支持。
创建缓存后,可以将其从基本层升级到高级层。 目前不支持纵向缩放到更低的层。 有关缩放的分步说明,请参阅如何缩放 Azure Chche for Redis 和如何缩放 - 基本层、标准层和高级层。
按区域列出的可用性
Azure Cache for Redis 正在不断扩展到新区域。 若要查看它的区域可用性,请参阅各区域的产品可用性。