配置参数

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 配置参数

下表总结了哪些配置参数可以在模块加载时和运行时设置

配置参数 加载时 运行时
TIMEOUT
ON_TIMEOUT
SAFEMODE 在 v1.6 中已弃用
CONCURRENT_WRITE_MODE
EXTLOAD
MINPREFIX
MINSTEMLEN
MAXPREFIXEXPANSIONS
MAXDOCTABLESIZE
MAXSEARCHRESULTS
MAXAGGREGATERESULTS
FRISOINI
CURSOR_MAX_IDLE
PARTIAL_INDEXED_DOCS
GC_SCANSIZE
GC_POLICY
NOGC
FORK_GC_RUN_INTERVAL
FORK_GC_RETRY_INTERVAL
FORK_GC_CLEAN_THRESHOLD
UPGRADE_INDEX
OSS_GLOBAL_PASSWORD
DEFAULT_DIALECT
VSS_MAX_RESIZE

TIMEOUT

搜索查询允许运行的最大时间(以毫秒为单位)。如果超过此时间,Redis 将返回迄今为止累积的最佳结果,或根据 ON_TIMEOUT 设置的策略返回错误。可以通过将其设置为 0 来禁用超时。

注意
  • TIMEOUT 仅指查询时间。
  • 解析查询不计入 TIMEOUT
  • 如果在搜索期间未达到 TIMEOUT,则最终操作(例如加载文档内容或简化器)将继续进行。

默认

500

示例

$ redis-server --loadmodule ./redisearch.so TIMEOUT 100

ON_TIMEOUT

对于超过 TIMEOUT 设置的查询,响应策略可以是以下之一

  • RETURN:此策略将返回查询在超时之前累积的最佳结果。
  • FAIL:查询超过超时值时将返回错误。

默认

RETURN

示例

$ redis-server --loadmodule ./redisearch.so ON_TIMEOUT fail

SAFEMODE

已弃用
在 v1.6 中已弃用。从该版本开始,SAFEMODE 是默认设置。如果您仍然希望为写入重新启用并发模式,请使用 CONCURRENT_WRITE_MODE

如果在参数列表中存在,RediSearch 将关闭查询处理的并发性并在单个线程中工作。

这在数据一致性极其重要时非常有用,并且避免了在查询文档时删除文档会导致短暂的不一致结果的情况。例如,在查询调用期间有效的文档不会返回,因为它们在查询处理期间被删除。

默认

关闭(不存在)

示例

$ redis-server --loadmodule ./redisearch.so SAFEMODE

CONCURRENT_WRITE_MODE

如果启用,写入查询将并发执行,但只有标记化部分并发执行。实际的写入操作仍然需要持有 Redis 全局锁。

默认

未设置 - “禁用”

示例

$ redis-server --loadmodule ./redisearch.so CONCURRENT_WRITE_MODE
注意
  • 在 v1.6 中添加

EXTLOAD

如果存在,RediSearch 将尝试从其指定的文件路径加载扩展动态库。有关详细信息,请参见 扩展

默认

示例

$ redis-server --loadmodule ./redisearch.so EXTLOAD ./ext/my_extension.so

MINPREFIX

允许的前缀查询的最小字符数(例如,hel*)。将其设置为 1 会损害性能。

默认

2

示例

$ redis-server --loadmodule ./redisearch.so MINPREFIX 3

MINSTEMLEN

要进行词干提取的最小词长。默认值为 4。将其设置为低于 4 会降低性能。

默认

4

示例

$ redis-server --loadmodule ./redisearch.so MINSTEMLEN 3

MAXPREFIXEXPANSIONS

允许的查询前缀扩展的最大数量。将其设置得太高会导致性能问题。如果达到 MAXPREFIXEXPANSIONS,查询将继续使用第一个获取的结果。该配置适用于所有词缀查询,包括前缀、后缀和中缀(包含)查询。

默认

200

示例

$ redis-server --loadmodule ./redisearch.so MAXPREFIXEXPANSIONS 1000

MAXDOCTABLESIZE

用于存储文档的内部哈希表的最大大小。注意:此配置选项不会限制可以存储的文档数量。它只影响哈希表内部数组的最大大小。在索引包含少量不断更新的文档的情况下,减少此属性可以减少内存开销。

默认

1000000

示例

$ redis-server --loadmodule ./redisearch.so MAXDOCTABLESIZE 3000000

MAXSEARCHRESULTS

如果使用 LIMIT,FT.SEARCH 命令返回的最大结果数。将值设置为 -1 将删除限制。

默认

1000000

示例

$ redis-server --loadmodule ./redisearch.so MAXSEARCHRESULTS 3000000

MAXAGGREGATERESULTS

如果使用 LIMIT,FT.AGGREGATE 命令返回的最大结果数。将值设置为 -1 将删除限制。

默认

无限制

示例

$ redis-server --loadmodule ./redisearch.so MAXAGGREGATERESULTS 3000000

FRISOINI

如果存在,则从指定路径加载自定义中文字典。有关更多详细信息,请参见 使用自定义字典

默认

未设置

示例

$ redis-server --loadmodule ./redisearch.so FRISOINI /opt/dict/friso.ini

CURSOR_MAX_IDLE

可以设置为 游标 API 的最大空闲时间(以毫秒为单位)。

默认

300000

示例

$ redis-server --loadmodule ./redisearch.so CURSOR_MAX_IDLE 500000
注意
  • 在 v1.6 中添加

PARTIAL_INDEXED_DOCS

启用/禁用 Redis 命令过滤器。过滤器优化哈希的局部更新,如果更改的字段不是模式的一部分,则可以避免重新索引哈希。

注意事项

Redis 命令过滤器将在每个 Redis 命令执行时执行。虽然过滤器已优化,但这会在所有命令上引入少量延迟增加。
此配置最适合于部分索引的文档,其中非索引字段经常更新。

默认

0

示例

$ redis-server --loadmodule ./redisearch.so PARTIAL_INDEXED_DOCS 1
注意
  • 在 v2.0.0 中添加

GC_SCANSIZE

用于清理索引的内部 GC 的批量大小。

默认

100

示例

$ redis-server --loadmodule ./redisearch.so GC_SCANSIZE 10

GC_POLICY

垃圾回收策略。支持的策略是

  • FORK:使用分叉线程进行垃圾回收(v1.4.1 及更高版本)。自 1.6.1 版本起,这是默认的 GC 策略,对于通用工作负载来说非常理想。
  • LEGACY:使用同步的、进程内分叉。这对于读取量大且追加量大的工作负载非常理想,这些工作负载更新/删除很少。在 v2.6.0 中已弃用。

默认

FORK

示例

$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK
注意
  • GC_POLICYFORK 时,它可以与以下选项结合使用。

NOGC

如果设置,则对所有索引禁用垃圾回收。这主要用于调试和测试,用户不应设置。

默认

未设置

示例

$ redis-server --loadmodule ./redisearch.so NOGC

FORK_GC_RUN_INTERVAL

两次连续 fork GC 运行之间的间隔(以秒为单位)。

默认

30

示例

$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_RUN_INTERVAL 60
注意
  • 只能与 GC_POLICY FORK 结合使用

FORK_GC_RETRY_INTERVAL

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_CLEAN_THRESHOLD

当未清理的文档数量超过此阈值时,fork GC 才会开始清理,否则它将跳过此次运行。虽然默认值为 100,但强烈建议将其更改为更大的数字。

默认

100

示例

$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_CLEAN_THRESHOLD 10000
注意
  • 只能与 GC_POLICY FORK 结合使用
  • 在 v1.4.16 中添加

UPGRADE_INDEX

此配置是一个特殊的配置选项,用于将索引从 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_GLOBAL_PASSWORD

将用于连接到其他分片的全局 Redis 社区版集群密码。

默认

未设置

示例

$ redis-server --loadmodule ./redisearch.so OSS_GLOBAL_PASSWORD password
注意
  • 仅在使用协调器时相关
  • 在 v2.0.3 中添加

DEFAULT_DIALECT

FT.CREATEFT.AGGREGATEFT.EXPLAINFT.EXPLAINCLIFT.SPELLCHECK 使用的默认 方言。有关更多信息,请参见 查询方言

默认

1

示例

$ redis-server --loadmodule ./redisearch.so DEFAULT_DIALECT 2

VSS_MAX_RESIZE

向量相似性索引的最大内存调整大小(以字节为单位)。如果您需要允许较大的 BLOCK_SIZE,则此值将覆盖默认的内存限制。

默认

0

示例

$ redis-server --loadmodule ./redisearch.so VSS_MAX_RESIZE 52428800  # 50MB
注意
  • 在 v2.4.8 中添加
RATE THIS PAGE
Back to top ↑