You need to enable JavaScript to run this app.
导航
参数支持
最近更新时间:2024.10.09 19:14:41首次发布时间:2021.11.04 17:58:55

缓存数据库 Redis 版支持自定义部分参数的值,本文介绍 Redis 实例中支持自定义的参数的相关信息。

参数支持表

说明

为最大程度地保障实例的稳定运行,目前缓存数据库 Redis 版仅开放了部分参数,下表中仅列出了支持自定义的参数。暂不支持自定义未出现在表中的参数。

参数说明

active-defrag-cycle-max

设置触发内存碎片整理时,CPU 占用比例的最大值。
单位:%,取值范围:[1,40],默认值:25。

active-defrag-cycle-min

设置触发内存碎片整理时,CPU 占用比例的最小值。
单位:%,取值范围:[1,20],默认值:1。

active-defrag-ignore-bytes

设置触发内存碎片整理时,碎片空间占用量的最小值。
单位:MB,取值范围:[100,1024],默认值:100。

active-defrag-max-scan-fields

设置在主哈希表扫描中,进行处理的 set/hash/zset/list 域数量的最大值。
取值范围:[500,50000],默认值:1000。

active-defrag-threshold-lower

设置触发内存碎片整理时,碎片空间占用比例的最小值。
单位:%,取值范围:[5,50],默认值:10。

active-defrag-threshold-upper

设置触发内存碎片整理时,碎片空间占用比例的最大值。当内存碎片超过该百分比时,尽最大努力整理。
单位:%,取值范围:[50,150],默认值:100。

activedefrag

开启或关闭自动内存碎片整理。取值范围如下:

  • yes:开启自动内存碎片整理。
  • no(默认值):关闭自动内存碎片整理。

client-output-buffer-pubsub-hard-limit

发布订阅客户端输出缓冲区的硬限制。
当客户端的输出缓冲区内存占用量达到或超过该限制时,客户端连接会断开。
单位:MB,取值范围:[1,64],默认值:32。

client-output-buffer-pubsub-soft-limit

发布订阅客户端输出缓冲区的软限制。
当输出缓冲区内存占用量在 client-output-buffer-pubsub-soft-seconds 参数指定的时间内,持续超过软限制设置的值时,客户端将断开连接。
单位:MB,取值范围:[1,64],默认值:8。

client-output-buffer-pubsub-soft-seconds

在发布订阅客户端断开连接之前,输出缓冲区大小持续超过 client-output-buffer-pubsub-soft-limit 参数值的时间。
单位:秒(s),取值范围:[1,900],默认值:60。

disabled-commands

设置禁用命令。
默认禁用了 flushallflushdbkeys 命令。
您也可根据业务需求禁用某些执行时长较长、复杂度较高或对业务风险较大的命令。Redis 实例类型不同,支持的命令也不同。不同实例类型支持的命令详情,请参见命令支持

说明

您可以在 disabled-commands 参数值中输入任意命令,但需注意如下几点:

  • 单个实例最多支持禁用 16 个命令,多个命令间用英文逗号(,)分隔。关于禁用命令的数量限制详情,请参见功能特性限制
  • 不支持禁用 AUTH 命令。
  • 输入的命令不区分大小写,但不允许在参数值中传入空格。
  • 若输入了主命令,那么该主命令下的所有子命令都会被禁用。
    例如,您在 disabled-commands 参数中输入了 OBJECT 主命令,那么 OBJECT 主命令下的所有子命令(包括 OBJECT ENCODINGOBJECT FREQOBJECT HELPOBJECT IDLETIMEOBJECT REFCOUNT)都会被禁用。
  • 不支持单独禁用任何子命令。
    例如,无论您将 OBJECT ENCODING 这一子命令以任意形式(包括但不限于 OBJECTENCODINGobject|encodingobject-encoding 等)输入到 disabled-commands 参数值中,该子命令也不会被禁用。
    如需禁用该子命令,您需要在 disabled-commands 参数值中输入其对应的主命令 OBJECT
  • 当您在执行缓存数据库 Redis 版不支持的命令(如 RESET)时,通常会出现 unknown command 的报错;但若您将不支持的参数加入了禁用命令 disabled-commands 参数值中,在您执行该命令时,会出现 no permission to execute the command 的报错。

hash-max-ziplist-entries

当哈希对象同时满足如下条件时使用 ziplist 编码:

  • 哈希对象保存的所有键值对的键和值的字符串长度的字节数都小于 hash-max-ziplist-value 的值。
  • 哈希对象保存的键值对数量小于 hash-max-ziplist-entries 的值。

取值范围:[1,10000],默认值:512。

hash-max-ziplist-value

哈希对象同时满足以下两个条件时,使用 ziplist 编码:

  • 哈希对象保存的所有键值对的键和值的字符串长度的字节数都小于 hash-max-ziplist-value 的值。
  • 哈希对象保存的键值对数量小于 hash-max-ziplist-entries 的值。

取值范围:[1,10000],默认值:64。

hz

设置 Redis 后台任务的每秒执行次数,例如清除过期键任务。
取值范围:[1,500],默认值:10。

说明

该值越大,CPU 资源消耗越多,但在过期键较多的情况下清理频率也更高,同时 Redis 能够更精确地处理超时。建议取值不超过 100。

lazyfree-lazy-eviction

是否开启基于 lazyfree 的驱逐功能。取值范围如下:

  • yes(默认值):开启。
  • no:不开启。

lazyfree-lazy-expire

是否开启基于 lazyfree 的过期键删除功能。取值范围如下:

  • yes(默认值):开启。
  • no:不开启。

lazyfree-lazy-server-del

是否开启基于 lazyfree 的 DEL 命令功能(即是否开启异步删除数据功能)。取值范围如下:

  • yes(默认值):开启。
  • no:不开启。

list-compress-depth

列表中两端不被压缩的节点个数。取值范围如下:

  • 0(默认值):列表中两端都不压缩。
  • 1~65535:表示 list 两端各有 1~65535 个节点不压缩,中间的节点压缩。

list-max-ziplist-size

每个 quicklist 节点中 ziplist 长度的设置策略,取值范围:[-5,100000],其中:

  • 取正值表示按照数据项个数来限定每个 quicklist 节点上的 ziplist 长度。例如,当该参数配置为 5 时,每个 quicklist 节点的 ziplist 最多包含 5 个数据项。
  • 取负值表示按照占用字节数来限定每个 quicklist 节点上的 ziplist 长度,其中:
    • -5:每个 quicklist 节点上的 ziplist 大小不能超过 64KB。
    • -4:每个 quicklist 节点上的 ziplist 大小不超过 32KB。
    • -3:每个 quicklist 节点上的 ziplist 大小不超过 16KB。
    • -2(默认值):每个quicklist 节点上的 ziplist 大小不超过 8KB。
    • -1:每个 quicklist 节点上的 ziplist 大小不超过 4KB。

说明

Redis 7.0 版本中使用 list-max-listpack-size 替代了 list-max-ziplist-size 参数。您在使用火山引擎缓存数据库 Redis 版 7.0 实例时,仅需设置 list-max-ziplist-size 参数,该参数可完全兼容 list-max-listpack-size 参数(包括参数取值范围和实现效果)。更多关于 list-max-listpack-size 的信息,请参见 Configuration file

lua-time-limit

一个 Lua 脚本阻塞执行的最长时间。当 Lua 运行超过该参数限制后,Redis 将开始接受其他命令但不会执行,而是返回 Busy 报错。
单位:毫秒(ms),取值范围:[0,5000](0 表示无限执行时间),默认值:5000。

maxmemory-policy

设置缓存满后 Redis 删除内容的策略,取值范围如下:

  • volatile-lru(默认值):只从设置失效(expire set)的键中选择最近最少使用的键进行删除。
  • allkeys-lru :优先删除掉最近最少使用的键。
  • volatile-lfu:只从设置失效(expire set)的键中选择最不常用的键进行删除。
  • allkeys-lfu:优先删除掉最不常用的键。
  • volatile-random:只从设置失效(expire set)的键中,随机选择一些键进行删除。
  • allkeys-random:随机选择一些键进行删除。
  • volatile-ttl:只从设置失效(expire set)的键中,选出存活时间 TTL(Time To Live)最短的键进行删除。
  • noeviction:不删除任何键,只是在写操作时返回错误。

proxy-slowlog-slower-than

Proxy 节点上请求被记录为慢日志的执行时间阈值,执行时间高于该阈值的请求会被记录到 Proxy 节点的慢日志中。
单位:微秒(us),取值范围:[50000,2000000],默认值:500000。

read_request_distribution_strategy

设置 Redis 实例分片的读写分离策略。取值范围如下:

  • read_primary_node_only(默认值):读请求仅发送到主节点。
  • read_secondary_nodes_only:读请求随机发送到所有从节点,均匀分布。
  • read_primary_node_and_secondary_nodes:读请求随机发送到主节点和所有从节点,均匀分布。

注意

  • 修改读写分离策略(read_request_distribution_strategy)的参数值后,客户端可能会短暂出现请求失败相关报错,建议在业务低峰期执行参数修改操作,并确保客户端配置了正确的重试机制。
  • Redis 单节点实例不支持读写分离功能,不支持设置该参数。关于单节点实例类型的更多说明,请参见产品架构

repl-backlog-size

设置主从复制 Backlog 容量大小。Backlog 是一个用来存放主从同步数据的 Buffer。当一个从节点想要重新连接时,通常不希望全部数据重新同步,只是传递在从节点断开连接时丢失的这部分数据。这个值越大,从节点可以断开连接的时间就越长。
单位:MB,取值范围:[64,256],默认值:128。

set-max-intset-entries

当集合中的元素全是整数,且长度不超过 set-max-intset-entries 的值(默认为 512)时,Redis 会选用 Intset 作为内部编码,大于 512 时,选择 set 作为内部编码。
取值范围:[1,10000],默认值:512。

slowlog-log-slower-than

Server 节点上请求被记录为慢日志的执行时间阈值,执行时间高于该阈值的请求会被记录到 Server 节点的慢日志中。
单位:微秒(us)。取值范围:[10000,10000000],默认值:20000。

slowlog-max-len

Server 节点上最多保存的慢日志数量,慢日志是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的日志将被删除,最新的日志会加入到 Server 节点的慢日志中。
取值范围:[1,1000],默认值:128。

proxy-client-idle-timeout

在客户端连接空闲时长达到指定值时关闭连接。
单位:秒(s),取值范围:[0,86400],默认值:0。

zset-max-ziplist-entries

当有序集合的元素同时满足以下两个条件时,使用 ziplist 编码,ziplist 可以有效的减少内存的使用。

  • 有序集合的元素小于 zset-max-ziplist-entries 配置。
  • 每个元素的值都小于 zset-max-ziplist-value

取值范围:[1,10000],默认值:128。

zset-max-ziplist-value

当有序集合的元素同时满足以下两个条件时, 使用 ziplist 编码,ziplist 可以有效的减少内存的使用。

  • 有序集合的元素个数小于 zset-max-ziplist-entries 配置。
  • 每个元素的长度都小于 zset-max-ziplist-value

取值范围:[1,10000],默认值:64。

notify-keyspace-events

设置键空间或键事件通知。参数值可以是如下字符的任意组合:

  • K:键空间,以 __keyspace@<db>__ 为前缀发布事件。
  • E:键事件,以 __keyevent@<db>__ 为前缀发布事件。
  • g:DEL、EXPIRE、RENAME 等类型无关的通用命令。
  • $:字符串命令。
  • l:列表命令。
  • s:集合命令。
  • h:哈希命令。
  • z:有序集合命令。
  • x:过期事件,当过期键被删除时,会发送事件。
  • e:驱逐事件,当键因为符合 maxmemory 策略而被驱逐时,会发送事件。
  • A:参数组合 g$lshzxe 别名。

例如需要订阅过期事件的通知,您可以先在参数设置中将 notify-keyspace-events 参数值设置为 Ex。配置参数后,在客户端执行 PSUBSCRIBE __keyevent@0__* 命令,表示订阅 DB0 的键事件通知。

说明

  • 实例架构类型不同,对该参数的支持情况不同,其中:
    • 未启用分片集群 Redis 实例支持该参数,您可以根据业务需要直接设置。
    • 针对分片集群的 Redis 实例,2024 年 05 月 09 日及之后创建的实例支持直接设置该参数;2024 年 05 月 09 日之前创建的实例如需使用该参数,请提交工单联系技术支持升级实例版本。
  • 空字符串表示关闭事件通知,默认值是空字符串。开启事件通知后,会占用一定的 CPU。更多信息,请参见 Redis keyspace notifications
  • 自定义配置参数值时,参数值中需要同时满足如下规范,否则不会产生事件:
    • 至少需要指定 KE 中的一个。
    • 至少需要指定 Ag$lshzxe 中的一个。
  • notify-keyspace-events 参数暂不对个人认证账号开放。如需使用,请先将个人认证升级为企业认证后再重新创建实例,通过企业认证账号创建的新实例默认支持使用该参数。

read_local_node_only

开启或关闭多可用区实例的就近访问功能。取值范围如下

  • yes(默认值):开启。
  • no:关闭。

注意

  • 修改就近访问功能(read_local_node_only)的参数值后,客户端可能会短暂出现请求失败相关报错,建议在业务低峰期执行参数修改操作,并确保客户端配置了正确的重试机制。
  • 仅部署了多可用区的实例支持设置该参数,单节点实例仅有一个节点,不支持部署多可用区。因此 Redis 单节点实例不支持设置该参数。关于多可用区部署方案的详情,请参见部署多可用区
  • 若实例未开启读写分离功能(即 read_request_distribution_strategy 取值为 read_primary_node_only),即使开启了就近访问功能,也不会生效。关于就近访问功能的更多信息,请参见就近访问

appendonly-switch

开启或关闭实例的 AOF 持久化功能。取值范围如下:

  • on(默认值):开启 AOF 持久化。
  • off: 关闭 AOF 持久化。

说明

  • 2024 年 07 月 10 日之前创建的实例如需使用该参数,请提交工单联系技术支持升级实例版本。
  • 暂不支持直接在 Redis 控制台修改该参数。如需修改,请提交工单联系技术支持。
  • 主备实例支持该参数。单节点实例不支持持久化能力,无法设置该参数。关于实例类型的更多详情,请参见产品架构
  • AOF 持久化功能和读写分离功能存在约束关系,其中:
    • 当参数 read_request_distribution_strategy 取值为 read_secondary_nodes_onlyread_primary_node_and_secondary_nodes时,不支持将参数appendonly-switch 设置为 off
    • 当参数 appendonly-switch 取值为 off 时,不支持将参数 read_request_distribution_strategy 设置为 read_secondary_nodes_onlyread_primary_node_and_secondary_nodes
  • AOF 持久化功能和数据闪回功能存在约束关系,其中:
    • 当参数 appendonly-switch 取值为 off 时,不允许开启数据闪回功能。
    • 当数据闪回功能开启时,不允许将 appendonly-switch 取值调整为 off