可扩展的 Redis 查询引擎的最佳实践

Redis 软件和 Redis Cloud 中可扩展 Redis 查询引擎的最佳实践。

Redis 堆栈

Redis 查询引擎的垂直扩展需要配置查询性能因素。通过精心设计搜索索引和查询,查询性能因素允许吞吐量扩展到 16 倍。以下建议可帮助查询避免访问密钥空间,并使 Redis 查询引擎能够从查询性能因素分配的额外 CPU 中受益。

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

索引最佳做法

请遵循以下最佳做法来编制索引

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

  • SORTABLE对于结果集中返回的所有字段。

  • 使用UNF选项TAGGEO领域。

  • 使用NOSTEM选项TEXT领域。

查询最佳实践

请遵循以下查询最佳实践:

  • RETURNLOAD子句,并将它们包含在索引定义中。不要只从FT.SEARCHLOAD *FT.AGGREGATE.

  • LIMIT以减小结果集大小。

  • DIALECT 3或更高(对于针对 JSON 的任何查询)。

索引和查询示例

以下示例描述了一个反模式索引架构和查询,后跟一个更正后的架构和查询,这允许使用 Redis 查询引擎进行扩展。

反模式索引架构

以下索引架构未针对垂直扩展进行优化:

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

Anti-pattern query

The following query is not optimized for vertical scaling:

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

Improved index schema

Here's an improved index schema that follows best practices for vertical scaling:

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

Improved query

Here's an improved query that follows best practices for vertical scaling:

FT.AGGREGATE jsonidx:profiles '@t:[1299 1299]' 
                LOAD 6 id t name lastname loc ver
                LIMIT 0 10
                DIALECT 3
RATE THIS PAGE
Back to top ↑