目录

在加载期间传递配置选项

在运行时设置配置选项

RedisSearch配置选项

超时

超时策略

安全模式

并发写入模式

extload

最小前缀

最大前缀扩展

MAXDOCTABLESIZE
MAXAGGREGATERESULTS
FRISOINI {file_name}
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


运行时配置

RedisSearch支持一些运行时配置选项,这些选项应该在加载模块时确定。随着时间的推移,更多选项将被增加进来。

在加载期间传递配置选项

通常,传递配置选项的方法是在命令行中的--loadmodule参数、Redis配置文件中的loadmodule配置指令或MODULE LOAD命令之后追加参数。例如:

redis.conf文件中:

loadmodule redisearch.so OPT1 OPT2

redis交互模式

127.0.0.6379> MODULE load redisearch.so OPT1 OPT2

Shell命令行

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

在运行时设置配置选项

从v1.4.1开始,FT.CONFIG允许在运行时设置一些选项。此外,该命令还可用于查看当前运行时配置选项。

RedisSearch配置选项

超时

允许运行搜索查询的最长时间(以毫秒为单位)。如果超过此时间,将返回到目前为止the top results accumulated(不知道怎么翻译好...

!!! 注:超时仅指查询时间。解析查询不计入超时。如果在搜索过程中未达到超时,请完成加载文档内容或reducers等操作,然后继续

默认:500 毫秒

例子:

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

超时策略

超过超时设置的查询的响应策略。

该策略可以是以下策略之一:

  • 返回(return):此策略将返回查询累积的顶部结果,直到超时。
  • 失败(fail):当查询超过超时值时,将返回错误。

默认: 返回(return)

例如:

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

安全模式

(safemode)如果在参数列表中体现,RedisSearch会关闭并发查询处理,并在单线程模式下工作。
这样处理在数据一致性要求很高的情况下非常重要,可以避免在查询文档时删除文档可能会导致暂时不一致的结果。

默认:off (不体现)

例子:

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

并发写入模式

(CONCURRENT_WRITE_MODE)

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

默认:disable

例子:

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

extload

(扩展加载?字面上是这个意思)

如果存在,我们将尝试从指定的文件路径加载搜索扩展动态库。

默认:不使用

例子:

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

最小前缀

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

默认:2

例子:

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

最大前缀扩展

允许查询前缀的最大扩展数。设置太高可能会导致性能问题。如果达到MaxPrefixeExpansions,查询将继续执行第一个获取的结果。

默认:200

例子:

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

注意:MAXPREFIXEXPANSIONS 替换了原有的 MAXEXPANSIONS,因为Redis官方认为两者是同义词。

MAXDOCTABLESIZE

(最大文档)

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

默认:1000000

例子:

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

MAXAGGREGATERESULTS

如果使用此限制,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

在cursor api中设置的最大idle时间(单位:毫秒)

默认:300000

例子:

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

注:1.6版本新加入

PARTIAL_INDEXED_DOCS

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

需要注意:每个Redis命令都会执行filter。虽然filter经过了优化,但仍会增加延迟。因此,这种配置最好用于非索引字段经常更新的部分索引文档(partial indexed documents)。

默认:0

例子:

$ redis-server --loadmodule ./redisearch.so PARTIAL_INDEXED_DOCS 1

加入版本:2.0.0

GC_SCANSIZE

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

默认:100

例子:

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

GC_POLICY

垃圾收集器(GC)的策略。支持的政策包括:

  • FORK:创建线程进行垃圾收集(v1.4.1及更高版本)。这是自1.6.1版以来的默认GC策略,非常适合于一般用途的场景
  • LEGACY:使用同步的进程内处理。适合于读多、追加多而很少更新/删除场景

默认:fork

例子:

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

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

如果出现故障,RediSearch将重试运行fork GC的时间间隔(以秒为单位)。通常,当redis fork api设置为不允许同时创建多个fork时,此功能会报错。

默认:5

例子:

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

FORK_GC_CLEAN_THRESHOLD

Threshold即门槛(阈值),所以:fork GC仅在未清理的文档数超过此阈值时才开始清理,否则将跳过此运行。强烈建议将其更改为比100更高的数字。

默认:100

例子:

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

UPGRADE_INDEX

很特殊的配置,用来升级v1.* RediSearch索引,在每个'legacy index'中都需要配合加上,配合index名称和index描述。详细请见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

OSS_GLOBAL_PASSWORD

用于连接到其它分片的全局oss群集密码。

例子:

$ redis-server --loadmodule ./redisearch.so OSS_GLOBAL_PASSWORD password

DEFAULT_DIALECT

被FT.CREATE, FT.AGGREGATE, FT.EXPLAIN, FT.EXPLAINCLI, and FT.SPECLCHECK使用的dialect。

默认:1

例子:

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