Skip to content

Latest commit

 

History

History
278 lines (145 loc) · 7.24 KB

4.Configuration.md

File metadata and controls

278 lines (145 loc) · 7.24 KB

#运行时配置 RediSearch支持一些运行时配置选项,这些选项应该在加载模块时确定。之后会添加更多配置项。

##加载期间传递配置选项 通常,传递配置选项是通过在命令行中的–loadmodule参数后附加参数来完成的。loadmodule配置指的是Redis配置文件中的loadmodule配置项,或MODULE LOAD命令。例如:

redis.conf:

loadmodule redisearch.so OPT1 OPT2

redis-cli:

127.0.0.6379> MODULE load redisearch.so OPT1 OPT2

命令行:

$ redis-server --loadmodule ./redisearch.so OPT1 OPT2

#在运行时设置配置选项 从版本v1.4.1开始,可通过 FT.CONFIG 命令在运行时设置配置。另外,该命令可用于查看当前运行时配置选项。

##RedisSearch配置选项

  • TIMEOUT 允许运行搜索查询的最长时间(以毫秒为单位)。如果超过此时间,将返回到目前为止累积的最大结果,或者返回一个错误,具体取决于使用ON_TIMEOUT超时设置的策略。可以通过将其设置为0来禁用超时。

这只在并发模式下工作,因此启用SAFEMODE将禁用此选项。

默认:

500

例子:

$ redis-server --loadmodule ./redisearch.so TIMEOUT 100
  • ON_TIMEOUT {policy}

超过超时设置的查询的响应策略。有以下策略:RETURN:此策略将返回查询所累积的最高结果,直到查询超时为止。 FAIL:当查询超过超时值时将返回错误。

默认:

RETURN

例子:

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

在版本v1.6中已弃用。在此版本中,默认为SAFEMODE。如果您仍然想重新启用并发写入模式,请使用CONCURRENT_WRITE_MODE! 如果该参数出现,那么RediSearch将关闭并发查询处理,只用单线程中工作。 如果数据一致性要去很高,这将非常有用,并避免在查询时有删除文档操作,这可能导致暂时不一致的结果(即,没有返回正确的文档,因为它们在查询期间可能被删除)。

默认:

Off (not present)

例子:

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

在版本v1.6中已弃用。

  • CONCURRENT_WRITE_MODE

如果启用,写操作、查询将同时执行。目前,只有标记化部分是并发执行的。实际的写操作仍然需要持有Redis全局锁。 默认:

disabled

例子:

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

在版本v1.6后支持。

  • EXTLOAD {file_name}

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

默认:

None

例子:

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

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

默认:

2

例子:

$ redis-server --loadmodule ./redisearch.so MINPREFIX 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将删除限制。

默认:

unlimited

例子:

$ redis-server --loadmodule ./redisearch.so MAXAGGREGATERESULTS 3000000
  • FRISOINI {file_name}

如果存在,将从指定路径加载自定义汉语词典。有关详细信息,请参见使用自定义词典。

默认:

例子:

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

可以设置游标存活的最大空闲时间(毫秒)。

默认:

300000

例子:

$ redis-server --loadmodule ./redisearch.so CURSOR_MAX_IDLE 500000

在版本v1.6后支持。

  • PARTIAL_INDEXED_DOCS

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

Redis命令filter将在每个Redis命令上执行。虽然对过滤器进行了优化,但这将导致所有命令的延迟略有增加。 因此,这种配置最好用于部分索引文档,非索引字段且更新频繁。默认:0

在版本v2.0.0后支持。

  • GC_SCANSIZE

用于清理索引的内部gc的垃圾回收块大小。

默认:

100

例子:

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

垃圾回收策略,支持的策略有: FORK:使用fork线程进行垃圾收集(v1.4.1及更高版本)。这是自版本1.6.1以来的默认GC策略,非常适合于一般用途的工作负载。 LEGACY:使用同步的进程。这非常适合于读取量大、附加量大、更新/删除很少的工作负载

默认:

FORK

例子:

$ redis-server --loadmodule ./redisearch.so GC_POLICY LEGACY

当gc策略是FORK时,它可以与下面的选项组合。

  • 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
  • FORK_GC_RETRY_INTERVAL

在gc失败时,RedisSearc将重试fork GC的时间间隔(秒)。通常,当redis fork api不允许同时创建多个fork时,可能会发生故障。

默认:

5

例子:

$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_RETRY_INTERVAL 10

在版本v1.4.16后支持。

  • FORK_GC_CLEAN_THRESHOLD

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

默认:

	100

例子:

$ redis-server --loadmodule ./redisearch.so GC_POLICY FORK FORK_GC_CLEAN_THRESHOLD 10000

在版本v1.4.16后支持。

  • UPGRADE_INDEX

此配置是为从v1.x版本升级索引而引入的特殊配置,称为“旧索引”。 需要为每个旧索引提供此配置选项,索引名称和索引描述的所有有效选项。如上所述ft.create的规则。有关详细信息,请参阅升级到版本v2.0。

例子:

$ 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文件包含未在配置中指定的旧索引,则加载将失败,服务器将无法启动。