可扩展的 Redis 查询引擎的最佳实践
Redis 软件和 Redis Cloud 中可扩展 Redis 查询引擎的最佳实践。
Redis 堆栈 |
---|
Redis 查询引擎的垂直扩展需要配置查询性能因素。通过精心设计搜索索引和查询,查询性能因素允许吞吐量扩展到 16 倍。以下建议可帮助查询避免访问密钥空间,并使 Redis 查询引擎能够从查询性能因素分配的额外 CPU 中受益。
查询性能因子改进的最佳候选项
索引最佳做法
请遵循以下最佳做法来编制索引:
-
在索引定义中包含查询中使用的字段或所需的结果集(投影)。
-
用
SORTABLE
对于结果集中返回的所有字段。 -
使用
UNF
选项TAG
和GEO
领域。 -
使用
NOSTEM
选项TEXT
领域。
查询最佳实践
请遵循以下查询最佳实践:
-
在
RETURN
或LOAD
子句,并将它们包含在索引定义中。不要只从FT.SEARCH
或LOAD *
从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
On this page