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预留了足够的余量。 - 该模块集与您的主动异地复制设计兼容。
- 每个计划的异地复制组成员都具有相同的配置。
- 客户端库支持应用程序使用的模块命令。
- 所选模块集涵盖预期的未来需求,因为以后无法将模块添加到实例。