配置参数
Redis 查询引擎可以通过多个配置参数进行调整。其中一些参数只能在加载时设置,而其他参数可以在加载时或运行时设置。
从 Redis Open Source (Redis 8) 的 Redis 8 开始,时间序列数据结构的配置参数现在可以通过以下方式设置
- 在加载时通过您的
redis.conf
文件设置。 - 在运行时(如适用)使用
CONFIG SET
命令设置。
此外,Redis 8 会像持久化其他任何配置参数一样持久化 RQE 配置参数(例如,使用 CONFIG REWRITE
命令)。
RQE 配置参数
下表总结了哪些配置参数可以在运行时设置,以及与 Redis Software 和 Redis Cloud 的兼容性。
参数名称 (版本 < 8.0) |
参数名称 (版本 ≥ 8.0) |
运行时 | Redis Software |
Redis Cloud |
---|---|---|---|---|
BG_INDEX_SLEEP_GAP | search-bg-index-sleep-gap | ⬜ | ||
CONCURRENT_WRITE_MODE | search-concurrent-write-mode | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
CONN_PER_SHARD | search-conn-per-shard | ✅ | ||
CURSOR_MAX_IDLE | search-cursor-max-idle | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
CURSOR_READ_SIZE | search-cursor-read-size | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
CURSOR_REPLY_THRESHOLD | search-cursor-reply-threshold | ✅ | ||
DEFAULT_DIALECT | search-default-dialect | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
EXTLOAD | search-ext-load | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
FORK_GC_CLEAN_THRESHOLD | search-fork-gc-clean-threshold | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
FORK_GC_RETRY_INTERVAL | search-fork-gc-retry-interval | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
FORK_GC_RUN_INTERVAL | search-fork-gc-run-interval | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
FORKGC_SLEEP_BEFORE_EXIT | search-fork-gc-sleep-before-exit | ✅ | ||
FRISOINI | search-friso-ini | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
GC_POLICY | 没有匹配的 CONFIG 参数。 |
⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
GCSCANSIZE | search-gc-scan-size | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
INDEX_CURSOR_LIMIT | search-index-cursor-limit | ⬜ | ||
INDEX_THREADS | search-index-threads | ⬜ | ||
MAXAGGREGATERESULTS | search-max-aggregate-results | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MAXDOCTABLESIZE | search-max-doctablesize | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MAXEXPANSIONS | search-max-expansions | ✅ | ||
MAXPREFIXEXPANSIONS | search-max-prefix-expansions | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MAXSEARCHRESULTS | search-max-search-results | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MIN_OPERATION_WORKERS | search-min-operation-workers | ✅ | ||
MIN_PHONETIC_TERM_LEN | search-min-phonetic-term-len | ✅ | ||
MINPREFIX | search-min-prefix | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MINSTEMLEN | search-min-stem-len | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
MULTI_TEXT_SLOP | search-multi-text-slop | ⬜ | ||
NO_MEM_POOLS | search-no-mem-pools | ⬜ | ||
NOGC | search-no-gc | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
ON_TIMEOUT | search-on-timeout | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
PARTIAL_INDEXED_DOCS | search-partial-indexed-docs | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
RAW_DOCID_ENCODING | search-raw-docid-encoding | ⬜ | ||
SEARCH_THREADS | search-threads | ⬜ | ||
TIERED_HNSW_BUFFER_LIMIT | search-tiered-hnsw-buffer-limit | ⬜ | ||
TIMEOUT | search-timeout | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
TOPOLOGY_VALIDATION_TIMEOUT | search-topology-validation-timeout | ✅ | ||
UNION_ITERATOR_HEAP | search-union-iterator-heap | ✅ | ✅ 支持 |
✅ 灵活版 & 包年版 |
UPGRADE_INDEX | search-upgrade-index | ⬜ | ✅ 支持 |
✅ 灵活版 & 包年版 |
VSS_MAX_RESIZE | search-vss-max-resize | ✅ | ||
WORKERS_PRIORITY_BIAS_THRESHOLD | search-workers-priority-bias-threshold | ⬜ | ||
WORKERS | search-workers | ✅ | ||
OSS_GLOBAL_PASSWORD | 在 v8.0.0 中已弃用。替换为 masterauth 密码。 |
⬜ | ✅ 支持 |
|
MT_MODE | 在 v8.0.0 中已弃用。请使用 search-workers。 | ⬜ | ||
PRIVILEGED_THREADS_NUM | 在 v8.0.0 中已弃用。请使用 search-workers-priority-bias-threshold。 | ⬜ | ||
WORKER_THREADS | 在 v8.0.0 中已弃用。请使用 search-min-operation-workers。 | ⬜ | ||
SAFEMODE | 在 v1.6.0 中已弃用。这现在是默认设置。 | ⬜ | ||
FORK_GC_CLEAN_NUMERIC_EMPTY_NODES | 在 v8.0.0 中已弃用。 | ⬜ |
search-bg-index-sleep-gap
在执行后台索引时运行的迭代次数,在此之前会调用 usleep(1)
(休眠 1 微秒),确保 Redis 可以处理其他命令。
类型:整数
有效范围:[1 .. 4294967295]
默认值:100
search-concurrent-write-mode
如果启用,写入查询的分词将并行执行。
类型:布尔值
默认值:FALSE
search-conn-per-shard
集群中每个分片的连接数。如果为 0
,连接数将设置为 search-workers
+ 1。
类型:整数
有效范围:[0 .. 9,223,372,036,854,775,807]
默认值:0
search-cursor-max-idle
可以为 cursor api 设置的最大空闲时间(毫秒)。
类型:整数
有效范围:[0 .. 9,223,372,036,854,775,807]
默认值:300000
search-cursor-read-size
类型:整数
默认值:1000
search-cursor-reply-threshold
在对分片触发 _FT.CURSOR READ
之前累积的最大回复数量。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:1
search-default-dialect
FT.CREATE
、FT.AGGREGATE
、FT.EXPLAIN
、FT.EXPLAINCLI
和 FT.SPELLCHECK
命令使用的默认 方言 (DIALECT)。更多信息请参阅查询方言。
默认值:1
search-ext-load
如果存在,Redis 将尝试从指定的文件路径加载扩展动态库。有关详细信息,请参阅扩展。
类型:字符串
默认值:未设置
search-fork-gc-clean-numeric-empty-nodes
清除数字树中的空节点。
类型:布尔值
默认值:TRUE
search-fork-gc-clean-threshold
当未清理文档的数量超过此阈值时,fork GC 才会开始清理,否则将跳过此次运行。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:100
search-fork-gc-retry-interval
Redis 在发生故障时重试运行 fork GC 的间隔(秒)。此设置只能与 search-gc-policy
的 FORK
设置结合使用。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:5
search-fork-gc-run-interval
两次连续 fork GC 运行之间的间隔(秒)。此设置只能与 search-gc-policy
的 FORK
设置结合使用。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:30
search-fork-gc-sleep-before-exit
fork GC 在退出前休眠的秒数。除了测试时,此值应始终设置为 0。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:0
search-friso-ini
如果存在,从指定路径加载自定义中文词典。有关详细信息,请参阅使用自定义词典。
类型:字符串
默认值:未设置
GC_POLICY
垃圾回收策略。支持的两种策略是
- FORK:使用分叉线程进行垃圾回收(v1.4.1 及更高版本)。这是自 v1.6.1 以来的默认 GC 策略,非常适合通用工作负载。
- LEGACY:使用同步的进程内分叉。这非常适合读取密集型和追加密集型工作负载,更新/删除非常少。在 v2.6.0 中已弃用。
注意:当 GC_POLICY
设置为 FORK
时,可以与 search-fork-gc-run-interval
和 search-fork-gc-retry-interval
设置结合使用。
类型:字符串
有效值:FORK
或 DEFAULT
默认值:FORK
search-gc-scan-size
用于清理索引的内部 GC 的批量大小。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
Redis Open Source 默认值:100
Redis Software 默认值:-1
(无限制)
Redis Cloud 默认值
- 灵活版 & 包年版:
-1
(无限制) - 免费版 & 固定版:
10000
search-index-cursor-limit
在 v2.10.8 中添加。
在任何给定时间,每个分片可以打开的最大游标数。用户可以通过 FT.AGGREGATE WITHCURSOR
打开游标。RQE 也会为长时间运行的查询内部打开游标。一旦达到 INDEX_CURSOR_LIMIT
,任何进一步尝试打开游标的操作都将导致错误。
- 修改此参数时应谨慎。每个打开的游标都会导致额外的内存使用。
- 在修改
INDEX_CURSOR_LIMIT
之前,应首先通过使用FT.CURSOR DEL
和/或MAXIDLE
来规范游标的使用。 - 有关详细信息,请参阅游标 API。
类型:整数
默认值:128
search-max-aggregate-results
如果使用 LIMIT
,FT.AGGREGATE
命令返回的最大结果数。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
Redis Open Source 默认值:-1
(无限制)
Redis Software 默认值:-1
(无限制)
Redis Cloud 默认值
- 灵活版 & 包年版:
-1
(无限制) - 免费版 & 固定版:
10000
search-max-doctablesize
用于存储文档的内部哈希表的最大大小。注意:此配置选项不限制可以存储的文档数量。它仅影响哈希表内部数组的最大大小。在索引包含少量文档且这些文档不断更新的情况下,减小此属性可以减少内存开销。
类型:整数
有效范围:[1 .. 18,446,744,073,709,551,615]
默认值:1000000
search-max-expansions
此参数是 search-max-prefix-expansions 的别名。
search-max-prefix-expansions
查询前缀允许的最大扩展数量。设置过高可能导致性能问题。如果达到 search-max-prefix-expansions
,查询将继续处理首先获得的结果。此配置适用于所有词缀查询,包括前缀、后缀和中缀(包含)查询。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:200
search-max-search-results
如果使用 LIMIT
,FT.SEARCH
命令返回的最大结果数。将其设置为 -1
可移除限制。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
Redis Open Source 默认值:1000000
Redis Software 默认值:1000000
Redis Cloud 默认值
- 灵活版 & 包年版:
1000000
- 免费版 & 固定版:
10000
search-min-operation-workers
服务器处于操作事件时,用于后台任务的工作线程数。
类型:整数
有效范围:[0 .. 8192]
默认值:4
search-min-phonetic-term-len
考虑进行语音匹配的最小术语长度。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:3
search-min-prefix
前缀查询(例如,hel*)允许的最小字符数。将其设置为 1
会降低性能。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:2
search-min-stem-len
词干提取的最小单词长度。将其设置低于 4
会降低性能。
类型:整数
有效范围:[2 .. 4,294,967,295]
Redis Open Source 默认值:4
Redis Software 和 Redis Cloud 默认值:2
search-multi-text-slop
设置用于增加多文本值数组槽之间位置偏移量的增量。这将允许您控制不同数组槽中短语的分离级别;与 FT.SEARCH
命令的 SLOP
参数相关。
类型:整数
有效范围:[0 .. 4,294,967,295]
默认值:100
search-no-mem-pools
设置 RQE 在没有内存池的情况下运行。
类型:布尔值
默认值:FALSE
search-no-gc
如果设置为 TRUE
,则所有索引的垃圾回收都将被禁用。
类型:布尔值
默认值:FALSE
search-on-timeout
对于超过 search-timeout
设置的查询的响应策略可以是以下之一
RETURN
:此策略将返回查询在超时之前累积的顶部结果。FAIL
:当查询超过超时值时将返回错误。
类型:字符串
有效值:RETURN
, FAIL
默认值:RETURN
search-partial-indexed-docs
在 v2.0.0 中添加。
启用/禁用 Redis 命令过滤器。该过滤器优化哈希的部分更新,如果更改的字段不属于 schema,则可以避免重新索引哈希。
Redis 命令过滤器将在每个 Redis 命令执行时运行。尽管过滤器经过优化,但这会使所有命令的延迟略有增加。
此配置最适合与部分索引的文档一起使用,其中非索引字段经常更新。
类型:整数
有效值:0
(假),1
(真)
默认值:0
search-raw-docid-encoding
禁用 DocID 倒排索引的压缩以提升 CPU 性能。
类型:布尔值
默认值:FALSE
search-threads
设置协调器线程池中的搜索线程数。
类型:整数
search-tiered-hnsw-buffer-limit
用于设置向量分层 HNSW 索引的缓冲区限制阈值。如果 Redis 使用 WORKERS
进行索引,并且缓冲区中等待索引的向量数量超过此限制,则新向量将直接插入到 HNSW 中。
类型:整数
有效范围:[0 .. 9,223,372,036,854,775,807]
默认值:1024
search-timeout
搜索查询允许运行的最大时间(毫秒)。如果超出此时间,Redis 将返回截至目前累积的顶部结果,或者根据使用 search-on-timeout
设置的策略返回错误。可以通过将其设置为 0
来禁用超时。
search-timeout
仅指查询时间。- 解析查询不计入
search-timeout
。 - 如果在搜索过程中未达到
search-timeout
,则加载文档内容或归约器等最终操作将继续。
类型:整数
取值范围:[1 .. 9,223,372,036,854,775,807]
Redis Open Source 默认值:500
Redis Software 默认值:500
Redis Cloud 默认值
- 灵活版 & 包年版:
500
- 免费版 & 固定版:
100
search-topology-validation-timeout
设置拓扑验证的超时时间(毫秒)。在此超时之后,即使拓扑未完全连接,任何待处理的请求都将得到处理。值为 0
表示没有超时。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:30000
search-union-iterator-heap
联合中迭代器的最小数量,达到此数量时迭代器将切换到基于堆的实现。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:20
search-upgrade-index
仅在加载 v1.x RDB 文件时相关。指定用于升级索引的参数。此配置设置是为升级 v1.x RQE 版本的索引而引入的特殊配置选项,这些索引也称为遗留索引。对于每个遗留索引,需要给出此配置选项,后跟索引名称和索引描述的所有有效选项(也称为后续哈希的 ON
参数),详情请参阅 FT.CREATE 命令页面。
类型:字符串
默认值:索引名称没有默认值,其他参数与 FT.CREATE
命令的默认值相同。
示例
search-upgrade-index idx PREFIX 1 tt LANGUAGE french LANGUAGE_FIELD MyLang SCORE 0.5 SCORE_FIELD MyScore
PAYLOAD_FIELD MyPayload UPGRADE_INDEX idx1
- 如果 RDB 文件不包含配置中指定的遗留索引,将在日志文件中添加警告消息,并且加载将继续。
- 如果 RDB 文件包含配置中未指定的遗留索引,加载将失败,并且服务器将无法启动。
search-vss-max-resize
在 v2.4.8 中添加。
向量索引的最大内存调整大小(字节)。此值将覆盖默认内存限制,如果您需要允许使用较大的 BLOCK_SIZE
。
类型:整数
有效范围:[0 .. 4,294,967,295]
默认值:0
search-workers-priority-bias-threshold
工作线程池在执行低优先级任务之前在任何给定时间执行的高优先级任务数量。在执行完此数量的高优先级任务后,工作线程池将交替执行高优先级和低优先级任务。
类型:整数
有效范围:[1 .. 9,223,372,036,854,775,807]
默认值:1
search-workers
用于查询处理和后台任务的工作线程数。
类型:整数
有效范围:[0 .. 8192]
默认值:0
在模块加载时设置配置参数(已弃用)
从 Redis 8 开始,这些方法已弃用。
在加载时设置配置参数可以通过在从命令行启动服务器时,在 --loadmodule
参数后附加参数,或者在 Redis 配置文件中的 loadmodule
指令后附加来实现。例如
在 redis.conf 中
loadmodule ./redisearch.so [OPT VAL]...
从 Redis CLI,使用 MODULE LOAD 命令
127.0.0.6379> MODULE LOAD redisearch.so [OPT VAL]...
从命令行
$ redis-server --loadmodule ./redisearch.so [OPT VAL]...
在运行时设置配置参数(对于支持的参数,已弃用)
从 Redis 8 开始,这些方法已弃用。
RQE 暴露了 FT.CONFIG
端点,允许在运行时设置和检索配置参数。
要在运行时(对于支持的参数)设置配置参数的值,只需运行
FT.CONFIG SET OPT1 VAL1
同样,您可以使用以下命令检索当前的配置参数值
FT.CONFIG GET OPT1
FT.CONFIG GET *
使用 FT.CONFIG SET
设置的值在服务器重启后不会持久化。