您可以根据业务场景对Tair(企业版)实例的参数进行调优与自定义配置,已提升实例的性能与安全性。本文介绍各参数的详细说明。
注意事项
若设置参数时报错
Parameter is not supported for current version
,请升级小版本后重试,具体操作请参见升级小版本与代理版本。部分参数在提交修改后会自动重启实例(重启过程中实例会发生秒级闪断)。在设置参数时,您需要关注目标参数的重启生效列,更多信息,请参见设置参数。
支持的参数及说明
为便于阅读和内容表达,本文的表格约定使用下述注释:
✔️表示在该大版本或架构下,支持该参数。
❌表示在该大版本或架构下,不支持该参数。
为最大程度保障实例的稳定运行,目前仅开放部分参数,若某个参数未在本文中列出,即不支持设置该参数。
关于架构的详细介绍,请参见架构信息查询。
内存型与持久内存型
参数 | 说明 | 实例系列与架构 | |
内存型 | 持久内存型 | ||
#no_loose_check-whitelist-always | 开启专有网络免密后,是否检查客户端的IP在实例白名单中。取值:
说明
| 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_disabled-commands | 设置禁用命令,可根据业务需求禁用某些高危命令或高时间复杂度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 说明
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️ 读写分离✔️ |
#no_loose_high-cost-key-enabled | 是否开启监测热Key(高访问流量)功能,该功能可以识别出每秒内访问流量高(例如Value体积大)的Key。开启后,您可以在 中查询系统监测到的热Key。
说明 仅内存型(兼容Redis 6.0及以上版本)、且小版本为25.2.0.0及以上支持该组参数。 | 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_high-cost-key-traffic-bytes-threshold | |||
#no_loose_lua-strict-mode | 是否开启Lua脚本严格模式。开启后标准架构实例可以类似集群架构,要求Lua脚本中的数据Key必须由
说明 仅内存型(兼容Redis 6.0及以上版本)支持该参数。 | 标准️️✔️ 集群❌ 读写分离❌️ | ❌ |
#no_loose_maxmemory-evict-percent-soft-limit | 设置提前逐出的内存阈值,取值范围为[50-100],单位为百分比,默认为100。实例内存到达该阈值后,Tair会在后台开始数据逐出,不影响命令执行的性能。 逐出策略仍取决于maxmemory-policy参数的配置。 说明 仅内存型(兼容Redis 6.0及以上版本)、且小版本为25.2.0.0及以上支持该参数。 | 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_publish-no-wait-result | 开启该参数后,会提升Tair实例执行PUBLISH命令的吞吐性能,但PUBLISH命令返回值总是0。
说明 仅内存型(兼容Redis 6.0及以上版本)支持该参数。 | 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_slow-query-isolation-weight | 为提高常规命令的时延表现,Tair特地隔离出一个独立的线程用于处理慢查询命令,该线程为额外添加线程,不会影响实例的正常处理。特定的慢查询命令包括KEYS、SMEMBERS、HKEYS、HVALS、HGETALL、EXHKEYS、EXHVALS和EXHGETALL命令,并不支持增减命令。 本参数定义为慢查询命令的阈值,即对应Key的子成员数量(个),对于KEYS命令则表示当前DB内的Key数量。取值范围为[1-999999999999999],默认为1000。例如某个Set集合的子成员数超1000,则对该Key执行SMEMBERS命令会使用隔离线程。 当隔离线程的等待请求数量超500时,后续命令将会在常规线程上处理。 说明
| 标准️️✔️ 直连集群✔️ 代理集群❌ 读写分离❌ | ❌ |
#no_loose_sentinel-enabled | 在标准架构,开启或关闭哨兵(Sentinel)兼容模式,取值:
| 标准️️✔️ 集群✔️ 读写分离❌ | 标准️️✔️ 集群✔️ 读写分离❌ |
#no_loose_sentinel-password-free-access | 开启哨兵模式时,是否允许免密执行Sentinel相关命令,取值:
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️ 读写分离✔️ |
#no_loose_sentinel-password-free-commands | 在开启哨兵模式以及#no_loose_sentinel-password-free-access参数后,您还可以通过本参数添加额外的免密命令列表(默认为空)。 重要
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️ 读写分离✔️ |
#no_loose_tls-min-version | 设置实例支持的TLS最低版本,取值:
| 标准️️❌ 集群✔️ 读写分离✔️ | ❌ |
active-expire-effort | 设置清理过期Key任务的主动性。增加该值可以使引擎更加主动地清理已过期的Key,减少已过期Key占用的内存空间,但同时会使CPU使用率与延迟上升。取值范围为[1-10],默认为1。 说明 仅持久内存型支持该参数。 | ❌ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
appendfsync | AOF(AppendOnly File)持久化功能的fsync频率,仅在appendonly参数开启时生效,默认为everysec,不支持修改。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
appendonly | 开启或关闭主节点的AOF持久化功能,取值:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
| 限制对发布订阅客户端、普通客户端的输出缓冲,参数值格式为
重要
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
dynamic-hz | 开启或关闭动态hz,取值:
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
globalvectorindex_enabled | TairVector全局索引开关,取值:
| 标准️️❌ 集群✔️ 读写分离❌ | ❌ |
| 兼容Redis 6.0及以下版本,默认使用ziplist作为Hash的编码方式。当Hash对象同时满足以下两个条件时, 使用ziplist编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
| 兼容Redis 7.0版本起,默认使用listpack作为Hash的编码方式。当Hash对象同时满足以下两个条件时, 使用listpack编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | ❌ |
hz | 设置实例后台任务执行频率,例如清除过期键任务。取值范围为[1-500],默认为10,即每秒执行10次。 说明 该值越大,CPU资源消耗越多,但在过期键较多的情况下清理频率也更高,同时实例能够更精确地处理超时。建议取值不超过100。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
lazyfree-lazy-eviction | 是否开启基于lazyfree的驱逐功能,取值:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
lazyfree-lazy-expire | 是否开启基于lazyfree的过期Key删除功能,取值:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
lazyfree-lazy-server-del | DEL命令是否基于lazyfree异步删除数据,取值:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
lazyfree-lazy-user-del | 执行DEL命令时是否基于lazyfree异步删除数据,取值:
| ❌ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
list-compress-depth | 列表中两端不被压缩的节点个数,取值范围为[0-65535]。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
| 兼容Redis 6.0及以下版本默认使用ziplist作为List的编码方式(list-max-ziplist-size参数),兼容Redis 7.0版本起默认使用listpack作为List的编码方式(list-max-listpack-size参数)。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
maxmemory-policy | 数据逐出策略。当实例内存不足,使用量达到Maxmemory时,会触发数据逐出,您可以选择不同的数据逐出策略。取值如下: 说明
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
notify-keyspace-events | notify-keyspace-events的参数值可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知。该参数将针对整个实例(所有DB)启用通知,启用后会额外消耗CPU,更多信息请参见Redis keyspace notifications。
重要 输入的参数中至少包含K或E, 否则不会有任何通知被分发。 例如您希望订阅过期事件,您可以在参数设置中将该参数设置为 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
pena_rename_move_compatible_enabled | 是否启用MOVE和RENAME系列命令兼容模式,相关命令的时间复杂度为O(n),不同于原生Redis的O(1),若执行对象为大Key则耗时会较长,取值:
说明 仅持久内存型1.2.4及以上版本支持该参数。 | ❌ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
set-max-intset-entries | 当Set集合内的数据符合以下条件时,会使用intset编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
slowlog-log-slower-than | 慢日志的阈值,慢日志将记录执行时间超过该阈值的命令。单位为微秒(μs),取值范围为[10000-10000000],默认为20000(即20毫秒)。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
slowlog-max-len | 慢日志最多保存记录条数,取值范围为[100-10000],默认为1024。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
stream-node-max-bytes | Stream中每个宏节点(Macro Node)能够占用的最大内存,单位为字节(Byte),取值范围为[0-999999999999999],默认为4096。 说明 0表示无限制。 | 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
stream-node-max-entries | Stream中每个宏节点中可存储条目的最大数量,取值范围为[0-999999999999999],默认为100。 说明 0表示无限制。 | 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
timeout | 当客户端的空闲时间达到指定秒数后,实例会关闭该连接,单位为秒,取值范围为[0,100000],默认为0(表示不断开任何连接)。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
ts-auto-del-empty-skey-enable | 当TairTS数据结构的Skey内部所有数据点都过期时,是否自动删除Skey,取值:
说明 仅内存型(兼容Redis 6.0及以上版本)、且小版本为24.7.0.0及以上版本支持该参数。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
| 兼容Redis 6.0及以下版本默认使用ziplist作为Zset的编码方式。当Zset同时满足以下两个条件时, 使用ziplist编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
| 兼容Redis 7.0版本起默认使用listpack作为Zset的编码方式。当Zset同时满足以下两个条件时, 使用listpack编码。
| ||
bigkey-threshold | Top Key统计中大Key(元素数量多的Key)的元素数量阈值。默认2000个,取值范围为[500-100000]。 说明 若参数设置未显示此参数,请升级小版本后重试。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | ❌ |
bigkey-mem-threshold | Top Key统计中大Key(元素数量多的Key)的内存大小阈值。默认536870912 B,取值范围为[1048576 B-1073741824 B]。 说明 仅内存型、且小版本为25.6.0.0及以上版本支持该参数。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | ❌ |
| Top Key统计中热Key(按QPS)的统计阈值。默认5000,取值范围为[100-100000]。 说明 仅支持内存型,且小版本满足以下要求:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | ❌ |
磁盘型
参数 | 说明 | 磁盘型 |
#no_loose_disabled-commands | 设置禁用命令,可根据业务需求禁用某些高危命令或高时间复杂度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 说明
| 标准✔️️ 集群✔️️️️️ |
#no_loose_lua-strict-mode | 是否开启Lua脚本严格模式。开启后标准架构实例可以类似集群架构,要求Lua脚本中的数据Key必须由
| 标准✔️️ 集群✔️️️️️ |
#no_loose_slow-query-isolation-weight | 为提高常规命令的时延表现,Tair特地隔离出一个独立的线程用于处理慢查询命令,该线程为额外添加线程,不会影响实例的正常处理。特定的慢查询命令包括KEYS、SMEMBERS、HKEYS、HVALS、HGETALL、EXHKEYS、EXHVALS和EXHGETALL命令,并不支持增减命令。 本参数定义为慢查询命令的阈值,即对应Key的子成员数量(个),对于KEYS命令则表示当前DB内的Key数量。取值范围为[1-999999999999999],默认为1000。例如某个Set集合的子成员数超1000,则对该Key执行SMEMBERS命令会使用隔离线程。 当隔离线程的等待请求数量超500时,后续命令将会在常规线程上处理。 说明 不建议将该阈值设置得过低,以免导致隔离线程的压力过大,从而造成整体资源的浪费。如果业务大多数请求就是上述慢查询命令,可以考虑关闭隔离线程机制,将该参数设置为最大值 999999999999999。 | 标准✔️ 直连集群✔️ 代理集群❌ |
latency-monitor-threshold | 设置延迟阈值,超过阈值时间的事件会被记录延迟事件,单位为毫秒,取值范围为[0-10000000],默认为100。 | 标准✔️ 集群✔️️️️️ |
max-write-batch-size | 表示执行命令的过程中,在内存中生成磁盘存储格式数据的大小限制,单位为字节(Byte),取值范围:0-1073741824(1 GB),默认为0,表示不设上限。 说明 若数据分布和请求容易生成较大的中间数据,推荐设置成1073741824(即1 GB),防止内存溢出。 | 标准✔️ 集群✔️️️️️ |
slowlog-log-slower-than | 慢日志的阈值,慢日志将记录执行时间超过该阈值的命令。单位为微秒(μs),取值范围为[10000-10000000],默认为1000000。 | 标准✔️ 集群✔️️️️️ |
slowlog-max-len | 慢日志最多保存记录条数,取值范围为[100-10000],默认为1024。 | 标准✔️️ 集群✔️️️️️ |
scan-background-interval-ms | 实例后台主动对Key进行轮询,判断数据的TTL等信息并进行垃圾回收。
说明
| 标准✔️️ 集群✔️️️️️ |
batch-scan-count | ||
batch-scan-size | ||
txn-isolation-lock | 是否开启事务锁,开启后允许磁盘型实例执行MULTI、EXEC和Lua脚本相关命令,事务锁功能可能会导致性能下降10%,取值:
| 标准✔️️ 集群✔️️️️️ |
Proxy节点参数
代理(Proxy)节点提供的参数,仅集群架构代理模式、读写分离架构实例支持下述参数。
参数 | 说明 |
cluster_compat_enable | 是否开启原生Redis cluster语法兼容,取值:
|
hello_enabled | 是否开启通过HELLO命令切换协议RESP2、RESP3协议的开关。取值:
说明 仅Proxy 7.0.9及以上版本支持该参数。 |
max_session_processing | 单个连接允许堆积的最大请求个数,取值范围为[10-10000000],默认为1000。 代理节点转发客户端的请求给数据节点,但是未收到数据节点的回复,此时该请求即处于堆积状态。该参数主要用于限制代理节点前后端处理能力差异导致的请求堆积,避免内存上涨的问题。 |
| 本组参数为可观测性能力的一部分,设置后还需要开通审计日志才会生效,统计周期为5秒/次。
说明
|
ptod_enabled | 是否将客户端的IP地址透传到数据节点,取值:
|
query_cache_enabled | 代理节点查询缓存功能。启用后,代理节点会缓存热点Key对应的请求和查询结果,当在有效时间内收到同样的请求时直接返回结果至客户端,无需和后端的数据分片交互。 重要 由于代理节点中缓存的热点Key的键值对信息在有效时间内不会更新,在启用该功能前,您需要确认业务上是否允许数据在缓存有效时间内的 最终一致性 。
|
query_cache_expire | |
query_cache_mode | |
readonly_lua_route_ronode_enable | 开启或关闭只读副本的Lua执行模式,取值:
|
read_request_only_ronode_whenrwsplit_enable | 开启或关闭只读账号请求定向转发,取值:
|
rt_threshold_ms | 代理节点中的慢日志阈值,单位为毫秒(ms),取值范围为[30-2000],默认为500。 说明 如果从代理节点向数据节点发出请求后,到代理节点收到响应结束的时间超过该阈值,则会生成一条慢日志。 |
script_check_enable | 开启或关闭代理节点对Lua脚本的检测,具体检查项请参见Proxy对Lua的检测项,取值:
|
sentinel_compat_enable | 开启或关闭哨兵(Sentinel)兼容模式,取值:
|
transfer_subscrible_to_psubscrible_enable | 开启或关闭SUBSCRIBE转PSUBSCRIBE功能,取值:
|