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

Azure Redis 缓存和卓越运营

Azure Redis 缓存 基于 Redis(远程字典服务器) 软件提供内存中数据存储。 它是一个安全的数据缓存和消息传送代理,可提供对应用程序的数据的高吞吐量和低延迟访问。

支持卓越运营的最佳做法包括:

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

设计注意事项

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

Redis 是密钥值对的内存中缓存,默认情况下具有高可用性(HA),但基本层除外。 Azure Redis 缓存有三个层:

  • 基本不建议用于生产工作负荷。 基本层非常适合:

    • 单节点
    • 多种尺寸
    • 开发
    • 测试
    • 非关键工作负荷
  • 标准:由 Microsoft 管理的双节点主配置和辅助配置中复制的缓存,具有高可用性 SLA。

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

    • 与基本层或标准层相比,硬件和性能更快。
    • 更大的缓存大小,最大为 120GB.
    • 数据持久性,包括 Redis 数据库文件 (RDB) 和仅追加文件 (AOF)。
    • VNET 支持。
    • 群集
    • 异地复制:辅助缓存位于另一个区域中,并从主要区域复制数据,以便进行灾难恢复。 若要故障转移到次要节点,需要手动取消链接缓存,然后次要节点可用于写入。 需要使用辅助节点的缓存连接字符串更新写入 Redis 的应用程序。
    • 可用性区域:跨可用性区域部署缓存和副本。

      注释

      默认情况下,每个部署的每个分片都有一个副本。 持久性、群集和地理复制在具有多个副本的部署中均处于禁用状态。 节点将均匀分布在所有区域。 你的副本计数应该 >= 区域数。

    • 导入和导出。

Microsoft 保证客户在至少 99.9% 的时间内可以将缓存终结点与 Microsoft 的 Internet 网关进行连接。

清单

是否在考虑卓越运营的情况下配置了 Azure Redis 缓存?


  • 计划更新。
  • 监视缓存并设置警报。
  • 在 VNET 中部署缓存。
  • 在解决方案中使用正确的缓存类型(本地、角色、托管、redis)。
  • 配置 数据持久性 以将缓存的副本保存到 Azure 存储或使用异地复制,具体取决于业务需求。
  • 使用一个静态或单例实现将多路复用器连接到 Redis,并遵循最佳做法指南
  • 查看 如何管理 Azure Redis 缓存

配置建议

浏览下表,以优化 Azure Redis 缓存配置,实现卓越运营:

建议 DESCRIPTION
计划更新。 计划并安排 Redis 服务器更新应用到缓存的日期和时间,注意这不包括 Azure 更新或虚拟机操作系统的更新。
监视缓存并设置警报。 为异常、高 CPU、内存使用率高、服务器负载和被逐出密钥设置警报,以获取有关何时扩展缓存的见解。 如果需要缩放缓存,请了解何时进行缩放非常重要,因为它会在缩放事件期间增加 CPU 以迁移数据。
在 VNET 中部署缓存。 让客户能够更好地控制可连接到缓存的流量。 确保子网有足够的地址空间可用于部署缓存节点和分片(群集)。
在解决方案中使用正确的缓存类型(本地、角色、托管、redis)。 缓存数据时,分布式应用程序通常实现以下任一或两种策略:
- 使用专用缓存,其中数据保存在运行应用程序或服务实例的计算机上本地。
- 使用共享缓存,充当可由多个进程和计算机访问的公共源。
在这两种情况下,都可以执行客户端和服务器端缓存。 客户端缓存由为系统(如 Web 浏览器或桌面应用程序)提供用户界面的过程完成。 服务器端缓存由提供远程运行的业务服务的过程完成。
配置 数据持久性 以将缓存的副本保存到 Azure 存储或使用异地复制,具体取决于业务需求。 数据持久性:如果主数据库和副本重新启动,数据将自动从存储帐户加载。 异地复制:辅助缓存需要从主缓存取消链接。 辅助缓存现在将成为主要缓存,并且可以接收写入
查看 如何管理 Azure Redis 缓存 了解如何在缓存重启时发生数据丢失,以及如何测试应用程序复原能力。

源项目

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

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

后续步骤