可扩展 Redis Query Engine 的最佳实践

Redis Software 和 Redis Cloud 中可扩展 Redis Query Engine 的最佳实践。

Redis Query Engine 的纵向扩展需要配置查询性能因子。通过精心设计搜索索引和查询,查询性能因子可使吞吐量扩展高达 16 倍。以下建议有助于查询避免访问键空间,并使 Redis Query Engine 从通过查询性能因子分配的额外 CPU 中获益。

查询性能因子改进的最佳候选者

索引最佳实践

遵循以下 索引 最佳实践

  • 在索引定义中包含用于查询或所需结果集(投影)的字段。

  • 对结果集中返回的所有字段使用 SORTABLE

  • TAGGEO 字段使用 UNF 选项。

  • TEXT 字段使用 NOSTEM 选项。

查询最佳实践

遵循以下 查询 最佳实践

  • RETURNLOAD 子句中指定结果集字段,并将它们包含在索引定义中。不要只返回 FT.SEARCH 的默认结果集或 FT.AGGREGATELOAD *

  • 使用 LIMIT 限制结果集大小。

  • 对任何 JSON 查询使用 DIALECT 3 或更高版本。

索引和查询示例

以下示例展示了一个反模式的索引 schema 和查询,随后是一个经过纠正的 schema 和查询,后者能够与 Redis Query Engine 实现可扩展性。

反模式索引 schema

以下索引 schema 未针对纵向扩展进行优化

FT.CREATE jsonidx:profiles ON JSON PREFIX 1 profiles: 
          SCHEMA $.tags.* as t NUMERIC SORTABLE 
                 $.firstName as name TEXT 
                 $.location as loc GEO

反模式查询

以下查询未针对纵向扩展进行优化

FT.AGGREGATE jsonidx:profiles '@t:[1299 1299]' LOAD * LIMIT 0 10

改进的索引 schema

这是一个遵循纵向扩展最佳实践的改进索引 schema

FT.CREATE jsonidx:profiles ON JSON PREFIX 1 profiles: 
          SCHEMA $.tags.* as t NUMERIC SORTABLE 
                 $.firstName as name TEXT NOSTEM SORTABLE 
                 $.lastName as lastname TEXT NOSTEM SORTABLE 
                 $.location as loc GEO SORTABLE 
                 $.id as id TAG SORTABLE UNF 
                 $.ver as ver TAG SORTABLE UNF

改进的查询

这是一个遵循纵向扩展最佳实践的改进查询

FT.AGGREGATE jsonidx:profiles '@t:[1299 1299]' 
                LOAD 6 id t name lastname loc ver
                LIMIT 0 10
                DIALECT 3
评价此页面
返回顶部 ↑