目录
运行时配置
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(不知道怎么翻译好... ),或者返回一个错误,具体取决于使用on_TIMEOUT设置的策略。可以通过将超时设置为0来禁用超时。
!!! 注:超时仅指查询时间。解析查询不计入超时。如果在搜索过程中未达到超时,请完成加载文档内容或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