规划 Azure 托管式 Redis 的 Redis 模块

Redis 模块会影响预配Azure托管 Redis 实例时做出的多个决策。 某个模块可能会限制你对层级、集群策略、逐出策略、主动异地复制设计和客户端库的选择。

使用本文在部署之前标识这些依赖项。 有关模块功能、命令指南和启用说明,请参阅将 Redis 模块与Azure托管 Redis 配合使用。

比较配置要求

使用以下矩阵来标识每个模块引入的配置约束。 Redis 模块表的范围仍然是模块可用性的权威源。

Module 支持的层级 所需的群集策略 必需的逐出策略 主动异地复制 规划结果
RediSearch 内存优化、均衡和计算优化 Enterprise NoEviction 支持 规划足够的内存空间以继续接受写入,而无需自动逐出。
RedisJSON 所有层级,包括闪存优化层级 没有模块特定的要求 没有模块特定要求 在非闪存层上受支持 RedisJSON 是 Flash Optimized 上唯一可用的模块。
RedisBloom 内存优化、均衡和计算优化 没有模块特定的要求 没有针对特定模块的要求 不支持 如果数据需要此模块,请使用单独的非异地复制实例。
RedisTimeSeries 内存优化、均衡和计算优化 无模块特定要求 无模块特定要求 不支持 如果数据需要此模块,请使用单独的非异地复制实例。

解决设计冲突

在预配实例之前解决这些约束:

  • 模块选择在创建时是固定的。 无法将模块手动加载到现有实例或选择模块版本。 如果稍后需要另一个模块,请预配新实例并迁移数据。
  • 合并模块时,所有要求均适用。 例如,将 RediSearch 与 RedisJSON 组合仍需要企业群集策略和 NoEviction。
  • Flash Optimized 仅支持 RedisJSON。 如果同一工作负荷还需要搜索、概率数据结构或时序功能,请选择非闪存层或跨实例拆分数据。
  • 主动异地复制仅支持 RediSearch 和 RedisJSON。 异地复制组中的每个实例都必须使用相同的模块、群集策略、逐出策略、SKU 和容量。 Flash Optimized 不支持活动异地复制。
  • 客户端支持因模块而异。 确认客户端库提供了所需的模块命令,或者支持通过泛型命令接口发出它们。

如果这些约束需要单独的实例,请定义每个实例中属于哪些数据,以及应用程序如何协调它们之间的操作。 不要假定命令或事务在多个实例之间具有原子性。

预配决策清单

在创建实例之前,请确认:

  • 所选层支持每个必需的模块。
  • 群集和逐出策略满足最严格的模块要求。
  • 如果启用 RediSearch,容量规划中为 NoEviction 预留了足够的余量。
  • 该模块集与您的主动异地复制设计兼容。
  • 每个计划的异地复制组成员都具有相同的配置。
  • 客户端库支持应用程序使用的模块命令。
  • 所选模块集涵盖预期的未来需求,因为以后无法将模块添加到实例。