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