使用 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.SEARCHFT.AGGREGATE 命令使用的默认查询方言。
  • 默认值:方言 1
  • 建议
    • 将默认值更新到方言 4,以获得更好的性能和访问高级功能。
    • 如果需要,单个命令可以覆盖此参数,但设置更高的默认值可确保查询之间的一致性能。

测试

1. 正确性

  • 运行一些测试查询,并检查结果是否符合预期。
  • 使用以下工具进行验证和调试
    • Redis CLI:使用 MONITOR 命令或 Redis Insight 中的性能分析功能来分析命令。
    • FT.PROFILE:提供对单个查询执行路径的详细洞察,有助于识别瓶颈和效率低下之处。

2. 性能

  • 在尽可能模拟生产环境的受控测试环境中测试查询性能。
  • 使用 memtier_benchmark 或自定义测试应用程序等工具模拟负载。
  • 网络注意事项
    • 通过将测试客户端置于与 Redis 实例相同的网络中,最大限度地减少测试期间的延迟。
    • 对于 Redis Cloud,确保测试机器与目标 Redis 数据库处于 VPC 对等环境中。

大小要求

Redis Search 的资源要求与一般的缓存用例不同。适当的大小调整可确保系统能够有效处理生产工作负载。

关键考量

  1. CPU
    • 充足的 CPU 资源至关重要.
    • 确保 CPU 不会因搜索线程和分片进程而过载。
  2. RAM
    • 规划充足的内存来存储数据集和索引,以及操作开销。
  3. 网络
    • 高吞吐量和低延迟至关重要,特别是对于具有高要求查询模式的应用程序。

工具

需求高峰

生产环境必须按照峰值负载场景进行规模调整,以确保在最大压力下性能保持可接受水平。

建议

  1. 规划高峰
    • 如果查询工作负载预计会显著变化,请确保基础设施能够处理峰值负载。
    • 监控实际使用模式并根据需要调整容量。
  2. 自动扩展
    • 考虑在云环境中使用自动扩展策略,根据负载动态调整资源。

遵循这些最佳实践,您可以确保 Redis 开源版和 RQE 从开发到生产的平稳高效过渡。适当的配置、严格的测试和仔细的资源规划对于提供可靠且高性能的 Redis 部署至关重要。

评价本页
返回顶部 ↑