配置参数
可以通过多个配置参数调整 Redis Stack 中的查询和搜索。其中一些参数只能在加载时设置,而其他参数可以在加载时或运行时设置。
在模块加载时设置配置参数
在加载时设置配置参数的方法是在从命令行启动服务器时在 --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]...
在运行时设置配置参数(对于受支持的参数)
RediSearch 公开了 FT.CONFIG
终结点,允许在运行时设置和检索配置参数。
要在运行时设置配置参数的值(对于受支持的参数),只需运行
FT.CONFIG SET OPT1 VAL1
同样,你可以使用以下方法检索当前配置参数值
FT.CONFIG GET OPT1
FT.CONFIG GET *
使用 FT.CONFIG SET
设置的值在服务器重启后不会保留。
RediSearch 配置参数
下表总结了哪些配置参数可以在模块加载时和运行时设置
配置参数 | 加载时 | 运行时 |
---|---|---|
超时 | ✅ | ✅ |
超时时 | ✅ | ✅ |
安全模式 在 v1.6 中已弃用 | ✅ | ✅ |
并发写入模式 | ✅ | ✅ |
外部加载 | ✅ | ✅ |
最小前缀 | ✅ | ✅ |
最大前缀扩展 | ✅ | ✅ |
最大文档表大小 | ✅ | ✅ |
最大搜索结果 | ✅ | ✅ |
最大聚合结果 | ✅ | ✅ |
FRISOINI | ✅ | ✅ |
游标最大空闲时间 | ✅ | ✅ |
部分索引文档 | ✅ | ✅ |
GC 扫描大小 | ✅ | ⬜ |
GC 策略 | ✅ | ✅ |
无 GC | ✅ | ✅ |
Fork GC 运行间隔 | ✅ | ✅ |
Fork GC 重试间隔 | ✅ | ✅ |
Fork GC 清理阈值 | ✅ | ✅ |
升级索引 | ✅ | ✅ |
OSS 全局密码 | ✅ | ⬜ |
默认方言 | ✅ | ✅ |
VSS 最大调整大小 | ✅ | ✅ |
超时
搜索查询允许运行的最大时间(以毫秒为单位)。如果超过此时间,Redis 将返回迄今为止累积的最高结果,或根据 ON_TIMEOUT
设置的策略返回错误。可以通过将其设置为 0 来禁用超时。
TIMEOUT
仅指查询时间。- 解析查询不计入
TIMEOUT
。 - 如果在搜索期间未达到
TIMEOUT
,则继续执行最终操作,例如加载文档内容或还原器。
默认值
500
示例
$ redis-server --loadmodule ./redisearch.so TIMEOUT 100
超时时
对于超出 TIMEOUT
设置的查询,响应策略可以是以下之一
- RETURN:此策略将返回查询累积的最高结果,直到超时。
- FAIL:当查询超过超时值时,将返回错误。
默认值
RETURN
示例
$ redis-server --loadmodule ./redisearch.so ON_TIMEOUT fail
安全模式
在 v1.6 中已弃用。从这个版本开始,安全模式是默认模式。如果您仍希望重新启用写入的并发模式,请使用 并发写入模式。
如果存在于参数列表中,RediSearch 将关闭查询处理的并发性,并在单个线程中工作。
如果数据一致性非常重要,这将非常有用,并且可以避免在查询文档时删除文档导致暂时不一致结果的情况。例如,由于在查询处理期间被删除,因此在调用查询期间有效的文档不会被返回。
默认值
关闭(不存在)
示例
$ redis-server --loadmodule ./redisearch.so SAFEMODE
并发写入模式
如果启用,将并发执行写入查询,但仅并发执行标记化部分。实际写入操作仍需要持有 Redis 全局锁。
默认值
未设置 - “已禁用”
示例
$ redis-server --loadmodule ./redisearch.so CONCURRENT_WRITE_MODE
- 在 v1.6 中添加
外部加载
如果存在,RediSearch 将尝试从其指定的文件路径加载扩展动态库。有关详细信息,请参阅扩展。
默认值
无
示例
$ redis-server --loadmodule ./redisearch.so EXTLOAD ./ext/my_extension.so
最小前缀
前缀查询允许的最小字符数(例如,hel*
)。将其设置为 1 会影响性能。
默认值
2
示例
$ redis-server --loadmodule ./redisearch.so MINPREFIX 3
最大前缀扩展
允许查询前缀的最大扩展数。将其设置得太高会导致性能问题。如果达到 MAXPREFIXEXPANSIONS,查询将继续使用第一个获取的结果。此配置适用于所有缀查询,包括前缀、后缀和中缀(包含)查询。
默认值
200
示例
$ redis-server --loadmodule ./redisearch.so MAXPREFIXEXPANSIONS 1000
最大文档表大小
用于存储文档的内部哈希表的最大大小。注意:此配置选项不会限制可存储的文档数。它仅影响哈希表内部数组的最大大小。在索引包含不断更新的少量文档的情况下,减小此属性可以减少内存开销。
默认值
1000000
示例
$ redis-server --loadmodule ./redisearch.so MAXDOCTABLESIZE 3000000
最大搜索结果
如果使用 LIMIT,FT.SEARCH
命令返回的最大结果数。将值设置为 -1
将移除限制。
默认值
1000000
示例
$ redis-server --loadmodule ./redisearch.so MAXSEARCHRESULTS 3000000
最大聚合结果
如果使用 LIMIT,FT.AGGREGATE
命令返回的最大结果数。将值设置为 -1
将移除限制。
默认值
无限制
示例
$ redis-server --loadmodule ./redisearch.so MAXAGGREGATERESULTS 3000000
FRISOINI
如果存在,从指定路径加载自定义中文词典。有关更多详细信息,请参阅使用自定义词典。
默认值
未设置
示例
$ redis-server --loadmodule ./redisearch.so FRISOINI /opt/dict/friso.ini
游标最大空闲时间
可设置为游标 API的最大空闲时间(以毫秒为单位)。
默认值
300000
示例
$ redis-server --loadmodule ./redisearch.so CURSOR_MAX_IDLE 500000
- 在 v1.6 中添加
部分索引文档
启用/禁用 Redis 命令过滤器。该过滤器优化哈希的局部更新,并且如果更改的字段不属于架构的一部分,则可以避免重新索引哈希。
注意事项
Redis 命令过滤器将在每个 Redis 命令上执行。虽然该过滤器经过优化,但这会对所有命令引入轻微的延迟增加。
此配置最适合于部分索引文档,其中非索引字段经常更新。
默认值
0
示例
$ redis-server --loadmodule ./redisearch.so PARTIAL_INDEXED_DOCS 1
- 在 v2.0.0 中添加
GC 扫描大小
用于清理索引的内部 GC 的批量大小。
默认值
100
示例
$ redis-server --loadmodule ./redisearch.so GC_SCANSIZE 10
GC 策略
垃圾回收策略。支持的策略有
- FORK:使用分叉线程进行垃圾回收(v1.4.1 及更高版本)。这是自 1.6.1 版本以来的默认 GC 策略,非常适合通用工作负载。
- LEGACY:使用同步的进程内分叉。这非常适合读写繁重且追加繁重的、更新/删除很少的工作负载。已在 v2.6.0 中弃用。
默认值
FORK
示例
$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK
- 当
GC_POLICY
为FORK
时,可以与以下选项结合使用。
无 GC
如果设置,则会为所有索引禁用垃圾回收。这主要用于调试和测试,不应由用户设置。
默认值
未设置
示例
$ redis-server --loadmodule ./redisearch.so NOGC
Fork GC 运行间隔
两次连续 fork GC
运行之间的间隔(以秒为单位)。
默认值
30
示例
$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_RUN_INTERVAL 60
- 只能与
GC_POLICY FORK
结合使用
Fork GC 重试间隔
在 fork GC
发生故障的情况下,RediSearch 将重新尝试运行 fork GC
的间隔(以秒为单位)。通常,当 Redis 分叉 API 不允许同时创建多个分叉时,可能会发生故障。
默认值
5
示例
$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_RETRY_INTERVAL 10
- 只能与
GC_POLICY FORK
结合使用 - 在 v1.4.16 中添加
Fork GC 清理阈值
fork GC
仅在未清理的文档数量超过此阈值时才开始清理,否则它将跳过此运行。虽然默认值为 100,但强烈建议将其更改为更大的数字。
默认值
100
示例
$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_CLEAN_THRESHOLD 10000
- 只能与
GC_POLICY FORK
结合使用 - 在 v1.4.16 中添加
升级索引
此配置是一个特殊配置选项,用于从 v1.x RediSearch 版本(也称为旧版索引)升级索引。需要为每个旧版索引提供此配置选项,后跟索引名称和索引描述的所有有效选项(也称为以下哈希的 ON
参数),如 ft.create api 中所述。
默认值
索引名称没有默认值,其他参数与 FT.CREATE
API 的默认值相同。
示例
$ redis-server --loadmodule ./redisearch.so 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 文件包含未在配置中指定的旧版索引,则加载将失败,并且服务器将不会启动。
OSS 全局密码
将用于连接到其他分片的全局 oss 集群密码。
默认值
未设置
示例
$ redis-server --loadmodule ./redisearch.so OSS_GLOBAL_PASSWORD password
- 仅在使用协调器时相关
- 在 v2.0.3 中添加
默认方言
要由 FT.CREATE
、FT.AGGREGATE
、FT.EXPLAIN
、FT.EXPLAINCLI
和 FT.SPELLCHECK
使用的默认方言。
默认值
1
示例
$ redis-server --loadmodule ./redisearch.so DEFAULT_DIALECT 2
- 在 v2.4.3 中添加的向量搜索需要
DIALECT 2
或更高版本。 - 从
FT.SEARCH
和FT.AGGREGATE
返回多个值需要DIALECT 3
或更高版本。
VSS 最大调整大小
向量相似性索引的最大内存调整大小(以字节为单位)。如果您需要允许较大的 BLOCK_SIZE
,此值将覆盖默认内存限制。
默认值
0
示例
$ redis-server --loadmodule ./redisearch.so VSS_MAX_RESIZE 52428800 # 50MB
- 在 v2.4.8 中添加