你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

了解差异 - 基本层、标准层和高级层与 Azure 托管 Redis

在迁移之前,请查看 Azure Redis 缓存与 Azure 托管 Redis 之间的主要差异,以便可以有效地规划。

重要

Azure Cache for Redis(基本层、标准层和高级层)的迁移代理技能可用于帮助回答与迁移相关的问题,并准备针对环境定制的迁移计划。 有关详细信息,请参阅 Redis 迁移代理技能

为什么 Azure 托管 Redis 性能更高

Azure 托管 Redis 构建于 Redis Enterprise 软件堆栈之上,相较于用于“基本层”、“标准层”和“高级层”的开源 Redis,它提供了显著的性能提升。 Redis Enterprise 使用多线程体系结构,可以每秒处理更多操作,提供较低的延迟,并更有效地使用基础硬件。 这意味着,对于相同的内存和计算量,与等效的基本、标准层或高级层缓存相比,Azure 托管 Redis 的吞吐量可以大幅提高。

此外,Azure 托管 Redis 通过 Redis 模块(如 RediSearch、RedisJSON 和 RedisBloom)支持高级数据结构,这些模块在基本层、标准层或高级层中不可用。 若要了解有关体系结构的详细信息,请参阅 Azure 托管 Redis 体系结构

关键特性/功能差异

下面是从基本、标准或高级迁移到 Azure 托管 Redis 时要注意的重要差异:

  • SKU 结构。 Azure 托管 Redis 以不同于 Azure Redis 缓存的方式组织 SKU。 与基于层级的 SKU(基本、标准、高级)不同,Azure 托管 Redis 的 SKU 是基于两个维度:内存大小性能层(均衡、内存优化或计算优化)。 所有高可用性和灾难恢复(HADR)功能(包括区域冗余、数据持久性、异地复制和导入/导出)均适用于所有大小和性能层。 不再需要选择更高级别的 SKU 即可访问这些功能。

  • 高可用性与非高可用性。 借助 Azure 托管 Redis,可以选择使用或不使用高可用性进行部署。 非 HA 选项专为想要降低成本的非生产工作负荷和开发/测试工作负荷而设计。 非 HA 实例不携带 SLA,并有可能在维护期间丢失数据。 相比之下,基本层、标准层和高级层不提供这种灵活性 - 基本层没有 HA,而标准层和高级层始终包含它。

  • 聚 类。 Azure 托管 Redis 默认群集化,提供两个群集策略 - OSS 群集和企业群集。 建议选择 OSS 群集以获得最佳性能。 如果当前使用的是非聚集基本缓存或标准缓存,则 Redis 客户端库配置可能需要更改才能使用群集实例(例如,使用群集感知客户端库处理 MOVED 重定向)。 如果应用程序绝对需要非聚集实例,Azure 托管 Redis 为缓存提供最多 25 GB 的非聚集模式。

  • 网络隔离。 Azure 托管 Redis 不支持虚拟网络注入和配置基于 IP 的防火墙规则。 如果现有的 Azure Redis 缓存实例使用虚拟网络注入进行网络隔离,则需要切换到将 Azure 专用链接与新的 Azure 托管 Redis 实例配合使用。

  • 缩放。 Azure 托管 Redis 支持更改内存大小和性能层。

  • Microsoft Entra ID。 这两个服务都支持Microsoft Entra ID 身份验证。 但是,Azure 托管 Redis 目前不支持 Microsoft Entra ID RBAC。

  • 计划的更新。 Azure Redis 缓存支持配置 Redis 引擎更新的计划更新窗口。 Azure 托管 Redis 目前支持以预览版提供的计划更新。

  • TLS 和非 TLS 端口支持。 在 Azure Redis 缓存基本层、标准层和高级层中,同一缓存实例可以同时支持 TLS(端口 6380)和纯文本(端口 6379)连接,从而允许不同的应用程序使用任一模式进行连接。 在 Azure 托管 Redis 中,缓存一次仅支持一种模式,即 TLS 或非 TLS。 在创建缓存期间选择模式后,连接到该缓存的所有应用程序都必须使用相同的模式。

  • 区域冗余。 当启用高可用性且区域支持多个可用性区域时,Azure 托管 Redis 默认情况下为区域冗余配置。 相比之下,区域冗余仅在高级层(以及标准版预览版)中可用。

  • 数据库。 基本层、标准层和高级层支持多个 Redis 数据库(默认情况下最多 16 个,可在高级版上配置最多 64 个)。 Azure 托管 Redis 仅支持单一数据库(数据库 0)。 如果应用程序使用多个数据库,则需要重构数据模型以使用单一数据库或使用密钥前缀在迁移之前以逻辑方式分隔数据。

  • 异地复制。 Azure 托管 Redis 支持活动异地复制,允许在不同区域中跨链接缓存执行读取和写入操作。 高级层仅支持被动异地复制,其中辅助缓存为只读。 与 Azure Cache for Redis 不同,Azure 托管 Redis 不支持显式 Failover 命令。 相反,当应用程序检测到某个区域关闭时,应用程序需要切换到其他异地复制的 Azure 托管 Redis 实例。

  • 数据持久性。 Azure 托管 Redis 支持所有 SKU 的数据持久性。 在 Azure Redis 缓存中,持久性仅在高级层中可用。

  • Redis 模块。 Azure 托管 Redis 支持 RediSearch、RedisJSON、RedisBloom 和 RedisTimeSeries 等 Redis 模块。 这些模块在基本层、标准层或高级层中不可用。

  • 导入/导出。 Azure 托管 Redis 支持在所有 SKU 中进行 RDB 的导入和导出。 在 Azure Redis 缓存中,此功能仅在高级层中可用。

  • 密钥空间通知。 Azure Redis 缓存支持密钥空间通知,但目前在 Azure 托管 Redis 中不可用。

  • 重新启动。 Azure Redis 缓存支持手动重启缓存节点。 此操作在自动管理节点操作的 Azure 托管 Redis 中不可用。 如果使用 Reboot 从缓存刷新数据,则 Azure Managed Redis 提供 Flush 作为管理操作。 Azure 托管 Redis API 用于模拟维护事件以测试应用程序的复原能力,该功能已列入开发计划。

客户端应用程序的主要差异

规划应用程序更新时,请查看以下差异:

功能说明 Azure Cache for Redis Azure 托管的 Redis
DNS 后缀(适用于 Azure 公有云) .redis.cache.windows.net <region>.redis.azure.net
TLS 端口 6380 10000
非 TLS 端口 6379 10000
单个节点 TLS 端口 13XXX 85xx
单个节点非 TLS 端口 15XXX 85xx
群集支持 仅限 OSS 群集 OSS 和企业群集
非群集/独立 是(基本,标准,高级高达 120GB) 是(非聚集模式,仅限 25 GB)
Redis 版本 6 7.4
支持的 TLS 版本 1.2 和 1.3 1.2 和 1.3

选择合适的 Azure Managed Redis 大小和 SKU

重要

Azure 托管 Redis 保留大约 20% 内存,用于系统操作和开销。 在为新实例选择合适的内存容量时,请考虑预留的内存。 例如,如果工作负荷需要 10 GB 的可用内存,请选择至少 12.5 GB 总内存的 SKU。

选择正确的 Azure 托管 Redis SKU 涉及两个步骤:选择正确的 内存大小 ,然后选择正确的 性能层

步骤 A:选择正确的内存大小

  1. 确定当前缓存的内存大小。 转到 Azure 门户,打开“基本”、“标准”或“高级”缓存,并记下 “概述 ”页中的内存大小(例如,C3 = 13 GB,P2 = 13 GB)。 对于高级群集缓存,请选择在所有分片中具有等效总内存的大小。

  2. 在 Azure 托管 Redis 中查找类似的大小 SKU。 查找提供相同或更大可用内存的 Azure 托管 Redis SKU。 在比较大小时,请注意 Azure Managed Redis 为系统操作和开销保留了大约 20% 的内存。 在选择大小时考虑此预留,例如,B10/M10/X10 SKU 提供 12 GB 的总内存,但预留后约有 9.6 GB 的可用内存用于存储数据。

  3. 根据实际内存使用情况进行优化。 查看 Azure Monitor 中现有缓存上的 “已用内存 ”指标,而不是匹配名义缓存大小。 检查过去一个月的峰值内存使用率,以确定更合适的 SKU。 如果实际内存使用量远远低于缓存大小,则可以选择更小、更具成本效益的 Azure 托管 Redis SKU。

步骤 B:选择正确的性能层

Azure 托管 Redis 提供三个性能层 - 均衡内存优化计算优化。 根据工作负荷特征进行选择:

  • 平衡 - 如果你不确定,这是一个很好的起点。 提供合理的内存与计算能力组合。
  • 内存优化 - 如果工作负荷占用大量内存,并且更有可能在 CPU 之前耗尽内存,请选择此选项。
  • 计算优化 - 如果工作负荷是吞吐量密集型或延迟敏感型,请选择此选项。

有关详细信息,请参阅 选择正确的层

其他注意事项

  • 禁用基本层迁移的高可用性。 如果要从基本缓存(没有复制或 SLA)迁移,请在新的 Azure 托管 Redis 实例上禁用高可用性。 这可减半成本,并为开发/测试工作负荷提供类似的设置。

后续步骤