SuperAPI AI 工具集

redis-query-engine

数据与分析

查看项目

更新于 10-15 23:31

技能介绍

用途:指导使用 Redis Query Engine(RQE)对 Hash 或 JSON 文档建立索引与搜索,覆盖模式设计、字段类型选择、查询语法、索引生命周期管理与常见性能陷阱。

主要能力与要点:

  1. 使用 DIALECT 2 作为基线,Redis 8 起其他方言已弃用;向量搜索必须使用 DIALECT 2。示例:FT.SEARCH idx:products "@name:laptop" DIALECT 2。
  2. 按访问模式选择最窄字段类型:TEXT 用于全文搜索(分词与词干化,不适合精确匹配);TAG 用于精确匹配与过滤,可加 SORTABLE UNF 提速;NUMERIC 用于范围查询与排序;GEO 用于经纬度点查询;GEOSHAPE 用于多边形/区域查询;VECTOR 用于相似度搜索(HNSW 或 FLAT)。常见错误是用 TEXT 存类别或状态字段,TAG 快约 10 倍。
  3. 只索引需要查询的字段,并始终设置 PREFIX,否则会索引所有匹配键,导致索引膨胀与写入延迟上升。示例:FT.CREATE idx:products ON HASH PREFIX 1 product: SCHEMA name TEXT WEIGHT 2.0 category TAG SORTABLE price NUMERIC SORTABLE location GEO。建议从最小模式开始,用 FT.INFO 监控索引大小,仅在真正排序的字段上用 SORTABLE。
  4. 零停机索引更新:应用查询指向别名,切换底层索引。示例:FT.CREATE idx:products_v2 ... 后执行 FT.ALIASUPDATE products idx:products_v2,应用查询保持 FT.SEARCH products "@category:{electronics}"。管理命令包括 FT.INFO、FT.DROPINDEX、FT._LIST、FT.ALIASADD/UPDATE/DEL。
  5. SKIPINITIALSCAN 仅在历史数据无关时使用,例如新功能上线、历史数据过大无法同步扫描、只关心未来事件的流式索引;多数模式迁移应保留默认全量扫描。
  6. 编写具体查询而非 *:先用过滤缩小结果集再分页或聚合。示例:FT.SEARCH idx:products "@category:{electronics} @price:[100 500]" LIMIT 0 20 RETURN 3 name price category。SORTBY 需要字段为 SORTABLE;LIMIT 应尽早;RETURN 只取所需字段;慢查询可用 FT.PROFILE idx:<name> SEARCH QUERY "<query>" 分析。

限制:资料未提供具体版本兼容细节、性能基准数值、客户端库差异及完整参考文档内容,相关事实暂未提供。