*Redis FT.SUGLEN 命令

FT.SUGLEN 用于返回自动补全建议词典中的词条数量。


*语法

FT.SUGLEN key

*参数说明

参数 类型 必填 说明
key String 自动补全词典的键名

*返回值

  • Integer: 词典中的词条总数;若 key 不存在返回 0

*时间复杂度

O(1)

*

*示例

*查看词典长度

> FT.SUGADD ac:products "redis" 1.0
(integer) 1
> FT.SUGADD ac:products "redisearch" 0.9
(integer) 2
> FT.SUGLEN ac:products
(integer) 2

*空词典

> FT.SUGLEN ac:empty
(integer) 0

*删除后更新长度

> FT.SUGADD ac:products "redis" 1.0
(integer) 1
> FT.SUGLEN ac:products
(integer) 1
> FT.SUGDEL ac:products "redis"
(integer) 1
> FT.SUGLEN ac:products
(integer) 0

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key 参数 提供词典键名

*最佳实践

  • 使用 FT.SUGLEN 监控词典大小,过大的词典可能影响查询性能
  • 在批量导入前检查词典长度,确认增量导入是否正确执行
  • 定期监控词典增长趋势,设置告警阈值(如超过 10 万条时审查)
  • 可作为清理任务的判断条件:若词典过长,触发归档或删除低频词条的逻辑
  • 在 Redis 监控面板中将各模块的词典长度作为指标展示

*FAQ

Q1: FT.SUGLEN 返回的是唯一词条数还是包含重复? A: 返回唯一词条数。FT.SUGADD 添加已存在的词条不会增加 SUGLEN(除非使用 INCR 时内部行为不同,但词条计数仍不变)。

Q2: 删除整个词典后 FT.SUGLEN 会怎样? A: 如果使用 DEL key 删除整个 key,再次调用 FT.SUGLEN 会返回 0。

Q3: FT.SUGLEN 和 Redis 的 LLEN/HLEN 有什么区别? A: FT.SUGLEN 专用于自动补全词典(RediSearch 的 Suggestion 结构),底层是前缀树(Trie)结构,不是 Redis 原生 List 或 Hash。

Q4: 词典大小对性能有影响吗? A: 有一定影响,但 FT.SUGGET 的复杂度主要是 O(log n + m),其中 n 是词典大小。通常情况下,百万级别的词典仍能快速响应。