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

Azure Cache for Redis 和可靠性

Azure Cache for Redis 基于 Redis(远程字典服务器)软件提供内存中数据存储。 这是一个安全的数据缓存和消息传送中转站,可让应用程序以较高的吞吐量、较低的延迟访问数据。

支持可靠性的关键概念和最佳做法包括:

以下部分包括特定于 Azure Cache for Redis 的设计注意事项、配置清单和建议配置选项。

设计注意事项

Azure Cache for Redis 服务级别协议 (SLA) 仅涵盖标准层和高级层缓存。 基本层未涵盖。

Redis 是键值对的内存中缓存,默认具有高可用性(基本层除外)。 Azure Cache for Redis 有三个层级:

  • 基本层:不建议用于生产工作负载。 基本层适用于:

    • 单节点
    • 多个大小
    • 开发
    • 测试
    • 非关键型工作负荷
  • 标准层:在 Microsoft 托管的双节点主辅配置中提供复制的缓存,并提供高可用性 SLA。

  • 高级层:包括所有标准层功能,并包括以下其他功能:

    • 与基本层或标准层相比,硬件和性能更快。
    • 更大的缓存大小,最高为 120GB
    • 数据持久性,包括 Redis 数据库文件和只追加文件。
    • VNET 支持。
    • 群集
    • 异地复制:二级缓存位于另一个区域,并从主缓存复制数据以进行灾难恢复。 要将故障转移到二级缓存,需要手动解除这些缓存的链接,然后二级缓存才可用于写操作。 向 Redis 中进行写入的应用程序需要使用二级缓存连接字符串进行更新。
    • 可用性区域:跨可用性区域部署缓存和副本。

      注意

      默认情况下,每个部署将为每个碎片提供一个副本。 目前,对于具有多个副本的部署,持久性、群集和地理复制都将被禁用。 你的节点将均匀地分布在所有区域。 副本数量应大于等于区域数量。

    • 导入和导出。

Microsoft 保证至少 99.9% 的情况下,客户将在缓存终结点和 Microsoft 的互联网网关之间建立连接。

清单

你在配置 Azure Cache for Redis 时是否考虑到了复原能力?


  • 计划更新。
  • 监视缓存并设置警报。
  • 在 VNET 中部署缓存。
  • 评估 Redis 缓存中的分区策略。
  • 根据业务需求,配置数据持久性以将缓存的副本保存到 Azure Storage 或使用异地复制。
  • 在 Azure Redis 缓存的上下文中实施重试策略。
  • 使用连接多路复用器到 Redis 的一个静态或单例实现,并遵循最佳做法指南
  • 请查看如何管理 Azure Cache for Redis

配置建议

浏览以下建议表以优化针对服务可靠性的 Azure Cache for Redis 数据库配置:

建议 说明
计划更新。 安排将 Redis 服务器更新应用到缓存的日期和时间,这不包括 Azure 更新,也不包括 VM 操作系统的更新。
监视缓存并设置警报。 针对异常、CPU 使用率高、内存使用率高、服务器负载和逐出的密钥设置警报,以深入了解何时缩放缓存。 如果缓存需要缩放,那么了解何时缩放非常重要,因为在迁移数据的缩放事件期间,这将增加 CPU。
在 VNET 中部署缓存。 使客户对可以连接到缓存的流量有更多的控制。 确保子网有足够的可用地址空间来部署缓存节点和分片(群集)。
评估 Redis 缓存中的分区策略。 将 Redis 数据存储分区需要跨 Redis 服务器的实例拆分数据。 每个实例组成一个分区。 Azure Redis 缓存将抽象化幕后的 Redis 服务,而不直接公开它们。 实施分区的最简单方法是创建多个 Azure Redis 缓存实例,并在其中分散数据。 可以将每个数据项与指定要在哪个缓存中存储该数据项的标识符(分区键)相关联。 然后,客户端应用程序逻辑可以使用此标识符将请求路由到相应的分区。 此方案非常简单,但如果分区方案发生更改(例如,如果已创建其他 Azure Redis 缓存实例),则可能需要重新配置客户端应用程序。
根据业务需求,配置数据持久性以将缓存的副本保存到 Azure Storage 或使用异地复制。 数据持久性:如果主数据和副本重新启动,数据将从存储帐户中自动加载。 异地复制:二级缓存需要与主缓存断开链接。 次要部分现在将成为主要部分,并可以接收写操作。
在 Azure Redis 缓存的上下文中实施重试策略。 大多数 Azure 服务和客户端 SDK 都包括重试机制。 这些机制有所不同,因为每个服务都有不同的特性和需求。 每个重试机制都针对一个特定服务进行了调优。
请查看如何管理 Azure Cache for Redis 了解在重新启动缓存时如何发生数据丢失,以及如何测试应用程序的弹性。

源项目

若要识别不在高级层上的 Redis 实例,请使用以下查询:

Resources 
| where type == 'microsoft.cache/redis'
| where properties.sku.name != 'Premium'

后续步骤