你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
从 Azure Cache for Redis 迁移到 Azure 托管 Redis(预览版)
本文介绍如何从 Azure Cache for Redis 实例迁移到 Azure 托管 Redis 实例(预览版)实例。
重要
Azure 托管 Redis 目前以预览版提供。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
先决条件
- Azure 订阅 - 创建免费帐户
- 任何 Azure Cache for Redis 的实例
Azure Cache for Redis 与 Azure 托管 Redis 之间的功能比较(预览版)
功能说明 | 基本 | 标准 | 高级 | 均衡(预览版) | 内存优化(预览版) | 计算优化(预览版) |
---|---|---|---|---|---|---|
可用性 | 空值 | 99.9% | 99.9% | 空值 | 不可用 | 空值 |
传输中的数据加密 | 是 | 是 | 是 | 是 | 是 | 是 |
网络隔离 | 是 | 是 | 是 | 是 | 是 | 是 |
纵向/横向扩展 | 是 | 是 | 是 | 是 | 是 | 是 |
纵向/横向缩减 | 是 | 是 | 是 | 否 | No | 否 |
OSS 群集 | 否 | No | 是 | 是 | 是 | 是 |
数据持久性 | 否 | No | 是 | 是 | 是 | 是 |
区域冗余 | 否 | 是(预览版) | 是 | 是 | 是 | 是 |
异地复制 | 否 | 否 | 是(被动) | 是(主动) | 是(主动) | 是(主动) |
连接审核日志 | 否 | No | 是 | 是(基于事件) | 是(基于事件) | 是(基于事件) |
Redis 模块 | 否 | No | No | 是 | 是 | 是 |
导入/导出 | 否 | No | 是 | 是 | 是 | 是 |
重新启动 | 是 | 是 | 是 | 否 | No | 否 |
计划的更新 | 是 | 是 | 是 | 否 | No | 否 |
Microsoft Entra ID 身份验证 | 是 | 是 | 是 | 是 | 是 | 是 |
Microsoft Entra ID RBAC | 是 | 是 | 是 | 否 | No | 否 |
Keyspace 通知 | 是 | 是 | 是 | 否 | No | 否 |
非高可用性 | 空值 | 否 | No | 是 | 是 | 是 |
下面是前一个映射未涵盖的一些其他差异。 考虑以下客户端应用程序更改:
功能说明 | 用于 Redis 的 Azure 缓存 | Azure 托管 Redis(预览版) |
---|---|---|
DNS 后缀(仅适用于 PROD 云) | .redis.cache.windows.net |
<region>.redis.azure.net |
TLS 端口 | 6380 | 10000 |
非 TLS 端口 | 6379 | 不支持 |
单个节点 TLS 端口 | 130XX | 85xx |
单个节点非 TLS 端口 | 150XX | 不支持 |
群集支持 | OSS 群集模式 | OSS 和企业群集模式 |
不支持的命令 | 不支持的命令 | 多键命令 |
区域可用性 | 所有 Azure 区域 | * 请参阅本部分后面的区域列表。 |
Redis 版本 | 6 | 7.4 |
支持的 TLS 版本 | 1.2 和 1.3 | 1.2 和 1.3 |
Azure Managed Redis 的区域可用性
Azure Managed Redis 目前在以下区域受支持。 此列表会定期更新。 最终,Azure 中的所有区域都将支持 Azure Managed Redis。 与销售联系人协作,在需要支持的区域提出请求。
美洲 | 欧洲 | 中东 | 非洲 | 亚太区 |
---|---|---|---|---|
Brazil South | 德国中西部 | 东亚 | ||
美国中西部 | 英国南部 | 澳大利亚东部 | ||
美国中北部 | 西欧 | 日本东部 | ||
美国西部 3 | 瑞典中部 | 东南亚 | ||
美国东部 2 | 印度中部 | |||
美国中南部 | ||||
美国西部 2 | ||||
美国东部 | ||||
美国西部 | ||||
美国中部 | ||||
加拿大中部 |
将 Azure Cache for Redis 实例迁移到 Azure 托管 Redis
注意
请务必根据需要来更新应用程序的其余部分和相关 Azure 资源以使用缓存。
选择要从 Azure 门户移动的缓存
Azure Cache for Redis 基本/标准/高级,非群集化
注意
使用 Azure 托管 Redis 的非高可用性选项迁移基本 SKU
用于 Redis 的 Azure 缓存 | Azure 托管 Redis | 其他内存 (%) |
---|---|---|
基本/标准 - C0 | 均衡 - B0 | 50 |
基本/标准 - C1 | 均衡 - B1 | 0 |
基本/标准 - C2 | 均衡 - B3 | 17 |
基本/标准 - C3 | 均衡 - B5 | 0 |
基本/标准 - C4 | 内存优化 – M10* | -8 |
基本/标准 – C4 | 内存优化 – M20** | 46 |
基本/标准 - C5 | 内存优化 – M20* | -8 |
基本/标准 – C5 | 内存优化 – M50** | 57 |
基本/标准 - C6 | 内存优化 - M50 | 12 |
高级 - P1 | 均衡 - B5 | 0 |
高级 - P2 | 均衡 - B10* | -8 |
高级 - P2 | 均衡 - B20** | 46 |
高级 - P3 | 均衡 - B20* | -8 |
高级 - P3 | 均衡 - B50** | 57 |
高级 - P4 | 均衡 - B50 | 12 |
高级 - P5 | 均衡 - B100 | 0 |
- *此选项用于实现成本效益。 要选择此选项,请确保过去一个月已用内存总量的峰值小于建议的 Azure Managed Redis 内存。
- ** 此选项适用于内存消耗达到一定量的情况。
Azure Cache for Redis 高级,群集化
- 对于分片群集,选择具有等效总内存的内存优化层。
- 对于具有多个只读副本的群集,选择总内存与主副本等效的计算优化层。
迁移选项
客户端应用程序应能够使用具有不同群集模式和终结点的 Azure 托管 Redis 实例。 Azure Cache for Redis 和 Azure 托管 Redis(预览版)兼容,因此大多数方案都不需要除连接配置以外的应用程序代码更改。
更多信息请访问:
用于将 Azure Cache for Redis 迁移到 Azure 托管 Redis 的选项
选项 | 优点 | 缺点 |
---|---|---|
创建新缓存 | 最易于实现。 | 需要将数据重新填充到新的缓存中,这可能不适用于许多应用程序。 |
通过 RDB 文件导出和导入数据 | 通常与任何 Redis 缓存兼容。 | 如果某些数据在生成 RDB 文件后写入现有缓存,这些数据可能会丢失。 |
将数据双重写入两个缓存 | 无数据丢失或停机时间。 现有缓存不间断操作。 更轻松地测试新缓存。 | 需要两个缓存以延长时间。 |
以编程方式迁移数据 | 对数据的移动方式具有完全控制。 | 需要自定义代码。 |
创建新的 Azure Cache for Redis
从技术上讲,这种方法不是迁移。 如果无需担心丢失数据,则迁移到 Azure 托管 Redis 的最简单方法是创建缓存实例并将应用程序连接到该实例。 例如,如果将 Redis 用作数据库记录的后备缓存,则可以轻松地从头开始重新生成缓存。 实现此选项的一般步骤如下:
- 创建新的 Azure 托管 Redis 实例。
- 更新应用程序以使用新实例。
- 删除旧的 Azure Cache for Redis 实例。
将数据导出到 RDB 文件并将该文件导入 Azure 托管Redis
此选项仅适用于高级层缓存。 开源 Redis 定义了一种标准机制,用于获取缓存的内存中数据集的快照并将其保存到文件中。 另一个 Redis 缓存可以读取导出的 RDB 文件。 Azure Cache for Redis 高级层支持通过 RDB 文件将数据导出缓存实例。 可以使用 RDB 文件将数据从现有 Azure Cache for Redis 实例传输到 Azure 托管 Redis 实例。
实现此选项的一般步骤如下:
- 创建一个新的 Azure 托管 Redis 实例,该实例的大小等于(或大于)现有 Azure Cache for Redis 实例的大小。
- 使用这些导出说明或 PowerShell Export cmdlet 从现有 Azure Cache for Redis 实例导出 RDB 文件
- 使用这些导入说明或 PowerShell Import cmdlet 将 RDB 文件导入新的 Azure 托管 Redis 实例
- 更新应用程序以使用新的 Azure 托管 Redis 实例连接字符串。
导出数据:
az redis export --resource-group <ResourceGroupName> --name <Azure Cache for Redis instance name> --prefix <BlobPrefix> --container <ContainerName> --file-format <FileFormat>
导入数据:
az redis import --resource-group <ResourceGroupName> --name <Azure Managed Redis instance name> --files <BlobUris>
将 ResourceGroupName、CacheName、BlobPrefix、ContainerName 和 FileFormat 替换为特定值。 --file-format_可以是 RDB 或 AOF。
在迁移期间同时写入两个 Redis 缓存
可以使用应用程序将数据写入到现有缓存和所设置的新缓存,而不是直接在缓存之间移动数据。 应用程序仍从现有的缓存中读取数据。 当新缓存拥有必要的数据后,就可以将应用程序切换到该缓存,然后停用旧缓存。 举例来说,假设使用 Redis 作为会话存储,且应用程序会话的有效期为 7 天。 写入两个缓存一周后,即可确定新缓存包含所有未过期会话信息。 此后,可放心地依靠它,而不必担心数据丢失。
实现此选项的一般步骤如下:
- 在高级层中创建与现有缓存大小相同(或大于现有缓存)的新 Azure Cache for Redis 实例。
- 修改应用程序代码以写入新实例和原始实例。
- 继续从原始实例读取数据,直到新实例填充足够的数据为止。
- 更新应用程序代码以仅从新实例读取和写入。
- 删除原始实例。
以编程方式迁移
可以通过编程方式从现有 Azure Cache for Redis 中读取数据并将其写入 Azure 托管 Redis 实例,从而创建自定义迁移过程。 有两种开源工具可以尝试:
- Redis-copy
- 此开源工具可用于将数据从一个 Azure Cache for Redis 实例复制到另一个 Azure Cache for Redis 实例。 此工具对于在不同 Azure 缓存区域中的缓存实例之间移动数据很有用。 还提供编译版本。 你还会发现,源代码可为编写自己的迁移工具提供有用指导。
- RIOT
- RIOT 是经 Redis 社区测试验证的另一种热门迁移工具。 它是一个命令行实用工具,旨在帮助将数据传入和传出 Redis。
注意
Microsoft 尚未正式支持此工具。
实现此选项的一般步骤如下:
- 在现有缓存所在区域中创建 VM。 如果数据集很大,请选择功能相对强大的 VM 以减少复制时间。
- 创建新的 Azure 托管 Redis 实例。
- 刷新新缓存中的数据以确保其为空。 由于复制工具本身不会覆盖目标缓存中的任何现有密钥,因此需要执行此步骤。 重要说明:确保不要从源缓存中刷新。
- 使用应用程序(例如前述开源工具)自动将数据从源缓存复制到目标缓存。 请记住,复制过程可能需要一段时间才能完成,具体取决于数据集的大小。