您可以根据业务场景对云原生内存数据库Tair实例的参数进行调优与自定义配置,已提升Tair实例的性能与安全性。本文介绍各参数的详细说明。
注意事项
支持的参数及说明
为便于阅读和内容表达,本文的表格约定使用下述注释:
✔️表示在该大版本或架构下,支持该参数。
❌表示在该大版本或架构下,不支持该参数。
内存型与持久内存型
参数 | 说明 | 实例系列与架构 | |
内存型 | 持久内存型 | ||
#no_loose_check-whitelist-always | 开启专有网络免密后,是否检查客户端的IP在Tair白名单中。可选值:
说明 仅本地盘版实例支持设置该参数。 | 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_disabled-commands | 设置禁用命令,可根据业务需求禁用某些高危命令或高时间复杂度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 说明
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️ 读写分离✔️ |
#no_loose_lua-strict-mode | 是否开启Lua脚本严格模式。开启后标准架构实例可以类似集群架构,要求Lua脚本中的数据Key必须由
说明 该参数仅在Tair内存型(兼容Redis 6.0版本)和磁盘型中支持。 | 标准️️✔️ 集群❌ 读写分离❌️ | ❌ |
#no_loose_publish-no-wait-result | 开启该参数后,会提升Tair实例执行PUBLISH命令的吞吐性能,但PUBLISH命令返回值总是0。
说明 该参数仅在Tair内存型(兼容Redis 6.0版本)中支持。 | 标准️️✔️ 集群✔️ 读写分离✔️ | ❌ |
sentinel_compat_enable | 在集群架构代理模式或读写分离架构,开启或关闭哨兵(Sentinel)兼容模式,可选值:
| 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
#no_loose_sentinel-enabled | 在标准架构或集群架构直连模式,开启或关闭哨兵(Sentinel)兼容模式,可选值:
| 标准️️✔️ 集群✔️ 读写分离❌ | 标准️️✔️ 集群✔️ 读写分离❌ |
#no_loose_sentinel-password-free-access | 开启哨兵模式时,是否允许免密执行Sentinel相关命令,可选值:
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️ 读写分离✔️ |
#no_loose_statistics-cmds | 本组参数为云原生内存数据库Tair可观测性能力的一部分,设置后还需要配合审计日志才会生效,统计周期为5秒/次。
说明
| 标准️️❌ 集群✔️ 读写分离✔️ | ❌ |
#no_loose_statistics-ip-enable | 标准️️❌ 集群✔️ 读写分离✔️ | ❌ | |
#no_loose_statistics-keys | 标准️️❌ 集群✔️ 读写分离✔️ | ❌ | |
#no_loose_tls-min-version | 设置实例支持的TLS最低版本,可选值:
| 标准️️❌ 集群✔️ 读写分离✔️ | ❌ |
active-expire-effort | 设置清理过期Key任务的主动性。增加该值可以使引擎更加主动地清理已过期的Key,减少已过期Key占用的内存空间,但同时会使CPU使用率与延迟上升。取值范围为1~10,默认值为1。 说明 该参数仅在Tair持久内存型支持。 | ❌ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
appendfsync | AOF(AppendOnly File)持久化功能的fsync频率,仅在appendonly参数开启时生效,默认为everysec,不支持修改。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
appendonly | 开启或关闭主节点的AOF持久化功能,可选值:
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
client-output-buffer-limit pubsub | 限制对发布订阅客户端的输出缓冲,参数值格式为
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
cluster_compat_enable | 在集群架构代理模式或读写分离架构,开启或关闭原生Redis cluster语法兼容,可选值:
| 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
dynamic-hz | 开启或关闭动态hz,可选值:
| 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
globalvectorindex_enabled | TairVector全局索引开关,取值:
| 标准️️❌ 集群✔️ 读写分离❌ | ❌ |
hash-max-ziplist-entries | 哈希对象同时满足以下两个条件时, 使用ziplist编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
hash-max-ziplist-value | |||
hello_enabled | 在集群架构代理模式或读写分离架构,是否开启通过HELLO命令切换协议RESP2、RESP3协议的开关。取值:
说明 仅Proxy 7.0.9及以上版本支持该参数。 | 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
hz | 设置Tair后台任务执行频率,例如清除过期键任务。取值范围为1~500,默认值为10,即每秒执行10次。 说明 该值越大,CPU资源消耗越多,但在过期键较多的情况下清理频率也更高,同时Tair能够更精确地处理超时。建议取值不要超过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。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
list-max-ziplist-entries | 链表对象同时满足以下两个条件时, 使用ziplist编码。
| ❌ | ❌ |
list-max-ziplist-value | |||
list-max-ziplist-size |
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
maxmemory-policy | 数据逐出策略。当Tair实例内存不足,使用量达到Maxmemory时,会触发数据逐出,您可以选择不同的数据逐出策略。取值如下: 说明
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
max_session_processing | 单个连接允许堆积的最大请求数。代理节点转发客户端的请求给数据节点,但是未收到数据节点的回复,此时该请求即处于堆积状态。该参数主要用于限制代理节点前后端处理能力差异导致的请求堆积,避免内存上涨的问题。 | 标准️️❌ 集群✔️ 读写分离✔️ | ❌ |
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则耗时会较长,可选值:
说明 该参数仅在Tair持久内存型1.2.4及以上版本中支持。 | ❌ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
ptod_enabled | 在集群架构代理模式或读写分离架构,是否将客户端的IP地址通过代理节点透传到数据节点,可选值:
| 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
query_cache_enabled | 是否启用代理查询缓存功能,具体使用方法,请参见通过Proxy Query Cache优化热点Key问题,该参数取值:
重要 由于代理节点中缓存的热点Key的键值对信息在有效时间内不会更新,在启用该功能前,您需要确认业务上是否允许数据在缓存有效时间内的 最终一致性 。 | 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
query_cache_expire | 缓存数据的有效时间,单位为毫秒,取值:100~60000,默认值为1000。
| 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
query_cache_mode | 代理查询缓存的工作模式,取值:
重要 由于代理节点的缓存空间有限(代理节点每个线程100 MB),若设置该参数的值为1,代理节点将按照LRU算法淘汰Key,可能降低缓存的命中率,从而引起整体性能的下降。 | 标准️️❌ 集群✔️ 读写分离✔️ | 标准️️❌ 集群✔️ 读写分离✔️ |
readonly_lua_route_ronode_enable | 开启或关闭只读副本的Lua执行模式,可选值:
| 标准️️❌ 集群❌️ 读写分离✔️ | ❌ |
read_request_only_ronode_whenrwsplit_enable | 开启或关闭只读账号请求定向转发,可选值:
| 标准️️❌ 集群✔️️️️️ 读写分离✔️ | ❌ |
rt_threshold_ms | 代理服务器中的慢日志阈值,单位为毫秒(ms)。若代理服务器处理一个请求的时间超过该阈值,则会生成一条慢日志。 说明 计时方式:从代理服务器向数据节点发出请求开始,到代理服务器收到响应结束。 | 标准️️❌ 集群✔️️️️️ 读写分离✔️ | 标准️️❌ 集群✔️️️️️ 读写分离✔️ |
script_check_enable | 在集群架构代理模式或读写分离架构,Proxy对Lua脚本的检测项,具体检查项请参见Proxy对Lua的检测项,可选值:
| 标准️️❌ 集群✔️️️️️ 读写分离✔️ | ❌ |
set-max-intset-entries | 当Set集合内的数据符合以下条件时,会使用intset编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
slowlog-log-slower-than | 慢日志的阈值,慢日志将记录执行时间超过该阈值的命令。单位为ms,默认值为20000(即20毫秒),取值范围10000~10000000。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
slowlog-max-len | 慢日志最多保存记录条数,取值范围100~10000,默认值为1024。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
stream-node-max-bytes | Stream中每个宏节点(Macro Node)能够占用的最大内存,取值范围:0~999,999,999,999,999。 说明 0表示无限制。 | 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
stream-node-max-entries | Stream中每个宏节点中可存储条目的最大数量,取值范围:0~999,999,999,999,999。 说明 0表示无限制。 | 标准️️✔️ 集群✔️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
timeout | 当客户端的空闲时间达到指定秒数后,Tair会关闭该连接,取值为[0,100000],默认为0(表示不断开任何连接),单位为秒。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
transfer_subscrible_to_psubscrible_enable | 开启或关闭SUBSCRIBE转PSUBSCRIBE功能,可选值:
| 标准️️❌ 集群✔️️️️️ 读写分离✔️ | ❌ |
ts-auto-del-empty-skey-enable | 当TairTS数据结构的Skey内部所有数据点都过期时,是否自动删除Skey,可选值:
说明 该参数仅在内存型(兼容Redis 6.0、7.0版本)24.7.0.0及以上版本中支持。 | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
zset-max-ziplist-entries | 排序集合对象同时满足以下两个条件时, 使用ziplist编码。
| 标准️️✔️ 集群✔️️️️️ 读写分离✔️ | 标准️️✔️ 集群✔️️️️️ 读写分离✔️ |
zset-max-ziplist-value |
磁盘型
参数 | 说明 | 磁盘型 |
#no_loose_disabled-commands | 设置禁用命令,可根据业务需求禁用某些高危命令或高时间复杂度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 说明
| 标准✔️️ |
#no_loose_lua-strict-mode | 是否开启Lua脚本严格模式。开启后标准架构实例可以类似集群架构,要求Lua脚本中的数据Key必须由
| 标准✔️️ |
latency-monitor-threshold | 设置延迟阈值,超过阈值时间的事件会被记录延迟事件,取值范围:0 ~ 10000000,单位为毫秒。 | 标准✔️ |
max-write-batch-size | 表示执行命令的过程中,在内存中生成磁盘存储格式数据的大小限制,单位为Byte,取值范围:0-1073741824(1 GB),默认为0,表示不设上限。 说明 若数据分布和请求容易生成较大的中间数据,推荐设置成1073741824(即1 GB),防止内存溢出。 | 标准✔️ |
slowlog-log-slower-than | 慢日志的阈值,慢日志将记录执行时间超过该阈值的命令。单位为ms,默认值为20000(即20毫秒),取值范围10000~10000000。 | 标准✔️ |
slowlog-max-len | 慢日志最多保存记录条数,取值范围:100~10000,默认值为1024。 | 标准✔️️ |
scan-background-interval-ms | 实例后台主动对Key进行轮询,判断数据的TTL等信息并进行垃圾回收。
说明 若您对后台垃圾回收要求较高,您可以适当调小scan-background-interval-ms值。但加大轮询频率也会占用更多的磁盘带宽,为不影响用户请求,不建议大幅提升轮询频率。 | 标准✔️️ |
batch-scan-count | 标准✔️️ | |
txn-isolation-lock | 是否开启事务锁,开启后允许磁盘型实例执行MULTI、EXEC和Lua脚本相关命令,事务锁功能可能会导致性能下降10%,可选值:
| 标准✔️️ |