使用 Redis Query Engine 从开发环境迁移到生产环境
将带有 Redis Query Engine (RQE) 的 Redis 开源环境从开发迁移到生产需要仔细考虑配置、性能调优和资源分配。本指南概述了关键实践,以确保您的 Redis 部署在生产工作负载下能以最佳状态运行。
配置参数考量
RQE 提供了多个可配置参数,它们会影响查询结果和性能。虽然这些参数及其功能的完整列表可以在此处找到,但本节重点介绍生产环境中最常调整的参数。
1. TIMEOUT
- 目的:限制查询允许执行的时长。
- 默认值:500 毫秒。
- 行为
- 确保查询不会独占主 Redis 线程。
- 如果查询超出
TIMEOUT
值,其结果由ON_TIMEOUT
设置决定FAIL
:查询将返回错误。PARTIAL
:此设置将返回查询在超时前累积的顶部结果。
- 建议
- 注意:增加
TIMEOUT
时需谨慎,因为长时间运行的查询可能会降低整体系统性能。
- 注意:增加
2. MINPREFIX
- 目的:设置通配符搜索所需的最小字符数。
- 默认值:2 个字符。
- 行为
- 像
he*
这样的查询是有效的,而h*
将不满足阈值。
- 像
- 建议
- 将此值降低到 1 会显著增加结果集,这可能导致性能下降。
- 除非有强烈的单字符通配符使用场景,否则请保持默认值。
3. MAXPREFIXEXPANSIONS
- 目的:定义通配符查询项的最大展开次数。
- 默认值:200 次展开。
- 行为
- 展开:处理通配符查询项时,Redis 从索引中生成满足通配符的所有可能匹配项列表。例如,查询 he* 可能会展开为 hello、hero 和 heat 等术语。这些匹配项中的每一个都是一个“展开”。
- 此参数限制 Redis 将生成和处理的展开次数。如果可能匹配的数量超过限制,查询可能会返回不完整的结果或失败,具体取决于查询上下文。
- 建议
- 避免过度增加此参数,因为这可能在查询执行期间导致性能瓶颈。
- 如果通配符搜索很常见,请考虑优化索引以减少对大通配符展开的依赖。
4. DEFAULT_DIALECT
- 目的:指定
FT.SEARCH
和FT.AGGREGATE
命令使用的默认查询方言。 - 默认值:方言 1。
- 建议
- 将默认值更新到方言 4,以获得更好的性能和访问高级功能。
- 如果需要,单个命令可以覆盖此参数,但设置更高的默认值可确保查询之间的一致性能。
测试
1. 正确性
- 运行一些测试查询,并检查结果是否符合预期。
- 使用以下工具进行验证和调试
- Redis CLI:使用
MONITOR
命令或 Redis Insight 中的性能分析功能来分析命令。 FT.PROFILE
:提供对单个查询执行路径的详细洞察,有助于识别瓶颈和效率低下之处。
- Redis CLI:使用
2. 性能
- 在尽可能模拟生产环境的受控测试环境中测试查询性能。
- 使用
memtier_benchmark
或自定义测试应用程序等工具模拟负载。 - 网络注意事项
- 通过将测试客户端置于与 Redis 实例相同的网络中,最大限度地减少测试期间的延迟。
- 对于 Redis Cloud,确保测试机器与目标 Redis 数据库处于 VPC 对等环境中。
大小要求
Redis Search 的资源要求与一般的缓存用例不同。适当的大小调整可确保系统能够有效处理生产工作负载。
关键考量
- CPU
- 充足的 CPU 资源至关重要.
- 确保 CPU 不会因搜索线程和分片进程而过载。
- RAM
- 规划充足的内存来存储数据集和索引,以及操作开销。
- 网络
- 高吞吐量和低延迟至关重要,特别是对于具有高要求查询模式的应用程序。
工具
- 使用 Redis Search 大小调整计算器,根据您的数据集和工作负载估算资源需求。
需求高峰
生产环境必须按照峰值负载场景进行规模调整,以确保在最大压力下性能保持可接受水平。
建议
- 规划高峰
- 如果查询工作负载预计会显著变化,请确保基础设施能够处理峰值负载。
- 监控实际使用模式并根据需要调整容量。
- 自动扩展
- 考虑在云环境中使用自动扩展策略,根据负载动态调整资源。
遵循这些最佳实践,您可以确保 Redis 开源版和 RQE 从开发到生产的平稳高效过渡。适当的配置、严格的测试和仔细的资源规划对于提供可靠且高性能的 Redis 部署至关重要。