Redis 特定的参数 - 适用于 Redis 的 Amazon MemoryDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Redis 特定的参数

如果您没有为 Redis 集群指定参数组,则将使用适合您引擎版本的默认参数组。您无法更改默认参数组中的任何参数的值。但是,您可以随时创建自定义参数组并将其分配给集群,只要可按条件修改的参数的值在两个参数组中相同。有关更多信息,请参阅 创建参数组

Redis 7 参数更改

注意

MemoryDB 推出了向量搜索的预览版,其中包括一个新的不可变参数组。default.memorydb-redis7.search.preview此参数组在 MemoryDB 控制台中可用,也可以在使用 create -cluster CLI 命令创建新 vector-search-enabled 集群时使用。该预览版在以下 Amazon 地区推出:美国东部(弗吉尼亚北部)、美国东部(俄亥俄州)、美国西部(俄勒冈)、亚太地区(东京)和欧洲(爱尔兰)。

参数组家族:memorydb_redis7

Redis 7 中增加的参数如下所示。

名称 详细信息 描述
latency-tracking

允许的值:yesno

默认:no

类型:字符串

可修改:是

更改生效:立即跨集群中的所有节点生效。

设置为“yes”(是)时,将跟踪每个命令的延迟,并允许通过 INFO 延迟统计命令导出百分位数分布,并通过 LATENCY 命令导出累积延迟分布(直方图)。

hash-max-listpack-entries

允许的值:0+

默认:512

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

压缩数据集所需的最大哈希条目数。

hash-max-listpack-value

允许的值:0+

默认:64

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

压缩数据集所需的最大哈希条目数的阈值。

zset-max-listpack-entries

允许的值:0+

默认:128

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

压缩数据集所需的最大已排序集合条目数。

zset-max-listpack-value

允许的值:0+

默认:64

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

压缩数据集所需的最大已排序集合条目数的阈值。

Redis 7 中更改的参数如下所示。

名称 详细信息 描述
activerehashing

可修改:no。在 Redis 7 中,原定设置情况下,此参数处于隐藏状态并处于已启用状态。为了禁用此参数,您需要创建一个支持案例

可修改:是。

Redis 7 中删除的参数如下所示。

名称 详细信息 描述
hash-max-ziplist-entries

允许的值:0+

默认:512

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

使用 listpack 而非 ziplist 来表示小哈希编码

hash-max-ziplist-value

允许的值:0+

默认:64

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

使用 listpack 而非 ziplist 来表示小哈希编码

zset-max-ziplist-entries

允许的值:0+

默认:128

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

使用 listpack 而非 ziplist 来表示小哈希编码。

zset-max-ziplist-value

允许的值:0+

默认:64

类型:整数

可修改:是

更改生效:立即跨集群中的所有节点生效。

使用 listpack 而非 ziplist 来表示小哈希编码。

Redis 6 参数

注意

在 Redis 引擎 6.2 版中,在推出 r6gd 节点系列以支持 数据分层 功能时,r6gd 节点类型仅支持 noevictionvolatile-lruallkeys-lru max-memory 策略。

参数组系列: memorydb_redis6

Redis 6 中增加的参数如下所示。

名称 详细信息 描述
maxmemory-policy

类型:字符串

允许的值:volatile-lru,allkeys-lru,volatile-lfu,allkeys-lfu,volatile-random,allkeys-random,volatile-ttl,noeviction

默认值:noeviction

达到最大内存使用率时密钥的移出策略。

有关更多信息,请参阅将 Redis 用作 LRU 缓存

list-compress-depth

类型:整数

允许的值:0-

默认:0

压缩深度是要从压缩中排除的列表各端的 quicklist ziplist 节点的数目。始终不会压缩列表的首尾以便执行快速推送和弹出操作。设置为:
  • 0:禁止所有压缩。

  • 1:从首尾开始将第一个节点压缩到列表中。

    [head]->node->node->...->node->[tail]

    压缩除 [head] 和 [tail] 以外的所有节点。

  • 2:从首尾开始将第二个节点压缩到列表中。

    [head]->[next]->node->node->...->node->[prev]->[tail]

    [head]、[next]、[prev]、[tail] 不压缩。压缩所有其他节点。

  • 等等

hll-sparse-max-bytes

类型:整数

允许的值:1-16000

默认值:3000

HyperLogLog 稀疏表示字节限制。限制包括 16 个字节的标头。当 HyperLogLog 使用稀疏表示超过此限制时,它将转换为密集表示。

不建议使用超过 16000 的值,因为此时密集表现形式具有更高的内存效率。

我们建议使用 3000 左右的值来获得空间效率较高的编码,同时不会过多地降低 PFADD 效率,即稀疏编码的复杂度为 O(N)。如果不考虑CPU,而是空间,并且数据集由许多 HyperLogLogs 基数介于 0-15000 范围内的数据集组成,则可以将该值提高到大约 10000。

lfu-log-factor

类型:整数

允许的值:1-

默认值:10

LFU 驱逐策略递增密钥计数器的日志因数。

lfu-decay-time

类型:整数

允许的值:0-

默认值:1

减少 LFU 驱逐策略的键计数器的时间,以分钟为单位。

active-defrag-max-scan-fields

类型:整数

允许的值:1-1000000

默认值:1000

活动碎片整理过程中将从主字典扫描中处理的最大 set/hash/zset/list 字段数。

active-defrag-threshold-upper

类型:整数

允许的值:1-100

默认值:100

我们使用最大精力的碎片最高百分比。

client-output-buffer-limit-pubsub-hard-limit

类型:整数

允许的值:0-

默认值:33554432

对于 Redis 发布/订阅客户端:如果客户端的输出缓冲区达到指定字节数,则客户端将断开连接。

client-output-buffer-limit-pubsub-soft-limit

类型:整数

允许的值:0-

默认值:8388608

对于 Redis 发布/订阅客户端:如果客户端的输出缓冲区达到指定字节数,仅当此条件保持 client-output-buffer-limit-pubsub-soft-seconds. 时间时,客户端将断开连接

client-output-buffer-limit-pubsub-soft-seconds

类型:整数

允许的值:0-

默认值:60

对于 Redis 发布/订阅客户端:如果客户端的输出缓冲区保持 client-output-buffer-limit-pubsub-soft-limit 字节的时间长于此秒数,则客户端将断开连接。

timeout

类型:整数

允许的值:0,20-

默认:0

节点在超时之前等待的秒数。值为:

  • 0 – 从不断开空闲客户端。

  • 1-19 – 无效值。

  • >=20 – 节点在断开空闲客户端之前等待的秒数。

notify-keyspace-events

类型:字符串

允许的值:NULL

默认值:NULL

Redis 向发布/订阅客户端通知的密钥空间事件。默认情况下,所有通知处于禁用状态。

maxmemory-samples

类型:整数

允许的值:1-

原定设置值:3

对于 least-recently-used (LRU)time-to-live (TTL)计算,此参数表示要检查的密钥的样本量。默认情况下,Redis 选择 3 个密钥并使用最近最少使用的一个密钥。

slowlog-max-len

类型:整数

允许的值:0-

默认值:128

Redis 慢速日志的最大长度。此长度没有限制。请注意,它会消耗内存。您可以通过 SLOWLOG RESET. 回收慢日志使用的内存

activerehashing

类型:字符串

允许的值:yes、no

默认值:yes

主哈希表每秒重新哈希十次;每个重新哈希操作消耗 1 毫秒的 CPU 时间。

在创建参数组时设置此值。向集群分配新参数组时,此值在旧参数组和新参数组中必须相同。

client-output-buffer-limit-normal-hard-limit

类型:整数

允许的值:0-

默认:0

如果客户端的输出缓冲区达到指定字节数,则客户端将断开连接。默认值为零(没有硬限制)。

client-output-buffer-limit-normal-soft-limit

类型:整数

允许的值:0-

默认:0

如果客户端的输出缓冲区达到指定字节数,则客户端将断开连接,但是仅当此条件保持 client-output-buffer-limit-normal-soft-seconds 时间时。默认值为零(没有软限制)。

client-output-buffer-limit-normal-soft-seconds

类型:整数

允许的值:0-

默认:0

如果客户端的输出缓冲区保持 client-output-buffer-limit-normal-soft-limit 字节的时间长于此秒数,则客户端将断开连接。默认值为零(没有时间限制)。

tcp-keepalive

类型:整数

允许的值:0-

默认:300

如果此参数设置为非零值(N),则节点客户端会每 N 秒轮询一次,以确保它们仍然连接。对于默认设置 0,不进行这种轮询。

active-defrag-cycle-min

类型:整数

允许的值:1-75

默认:5

用于碎片整理的最少精力,以 CPU 百分比为单位。

stream-node-max-bytes

类型:整数

允许的值:0-

默认值:4096

流数据结构是节点的基数树,这些节点对内部的多个项进行编码。使用此配置指定基数树中单个节点的最大大小(以字节为单位)。如果设置为 0,则树节点的大小是不受限制的。

stream-node-max-entries

类型:整数

允许的值:0-

默认值:100

流数据结构是节点的基数树,这些节点对内部的多个项进行编码。使用此配置指定在追加新的流条目时切换到新节点之前单个节点可包含的项的最大数目。如果设置为 0,则树节点中的项数是不受限制的。

lazyfree-lazy-eviction

类型:字符串

允许的值:yes、no

默认值:no

对移出执行异步删除。

active-defrag-ignore-bytes

类型:整数

允许的值:1048576-

默认值:104857600

启动有效碎片整理的碎片垃圾最低量。

lazyfree-lazy-expire

类型:字符串

允许的值:yes、no

默认值:no

对已过期密钥执行异步删除。

active-defrag-threshold-lower

类型:整数

允许的值:1-100

默认值:10

启动有效碎片整理的碎片最低百分比。

active-defrag-cycle-max

类型:整数

允许的值:1-75

默认值:75

用于碎片整理的最多精力,以 CPU 百分比为单位。

lazyfree-lazy-server-del

类型:字符串

允许的值:yes、no

默认值:no

对更新值的命令执行异步删除。

slowlog-log-slower-than

类型:整数

允许的值:0-

默认值:10000

Redis Slow Log 功能记录的命令的最大执行时间(单位:微秒)。请注意,负数表示禁用慢日志,而值为零则表示强制记录每个命令。

hash-max-ziplist-entries

类型:整数

允许的值:0-

默认值:512

确定用于哈希的内存量。条目少于指定数量的哈希使用节省空间的特殊编码进行存储。

hash-max-ziplist-value

类型:整数

允许的值:0-

默认值:64

确定用于哈希的内存量。条目小于指定字节数的哈希使用节省空间的特殊编码进行存储。

set-max-intset-entries

类型:整数

允许的值:0-

默认值:512

确定用于特定类型的集(在 64 位有符号整数的范围内,以 10 为基数的整数表示的字符串)的内存量。条目少于指定数量的这类集使用节省空间的特殊编码进行存储。

zset-max-ziplist-entries

类型:整数

允许的值:0-

默认值:128

确定用于排序集的内存量。元素少于指定数量的排序集使用节省空间的特殊编码进行存储。

zset-max-ziplist-value

类型:整数

允许的值:0-

默认值:64

确定用于排序集的内存量。条目小于指定字节数的排序集使用节省空间的特殊编码进行存储。

tracking-table-max-keys

类型:整数

允许的值:1-100000000

默认值:1000000

为了帮助客户端缓存,Redis 支持跟踪哪些客户端访问了哪些密钥。

当所跟踪的密钥被修改后,会向所有客户端发送失效消息,通知它们缓存的值不再有效。此值允许您指定此表的上限。

acllog-max-len

类型:整数

允许的值:1-10000

默认值:128

ACL 日志的最大条目数。

active-expire-effort

类型:整数

允许的值:1-10

默认值:1

Redis 会通过两种机制删除超过密钥自身存活时间的密钥。一种机制是,访问密钥并发现其已过期。另一种机制是,周期性任务对密钥进行采样,并使那些超过其存活时间的密钥过期。此参数定义 Redis 用于在周期性任务中使项目过期的工作量。

默认值 1 用于避免 10% 以上的过期密钥仍存在于内存中。其还用于避免 25% 以上的总内存被消耗及增加系统的延迟。您可以将此值增加到 10,以提高用在过期密钥上的工作量。需要权衡的是,当 CPU 更高时,延迟也可能会更高。我们建议将值设为 1,除非您发现内存使用率较高,并且可以容忍 CPU 使用率升高。

lazyfree-lazy-user-del

类型:字符串

允许的值:yes、no

默认值:no

指定 DEL 命令的默认行为是否与 UNLINK 相同。

activedefrag

类型:字符串

允许的值:yes、no

默认值:no

已启用有效的内存碎片整理。

maxclients

类型:整数

允许的值:65000

默认值:65000

可以一次连接的最大客户端连接数。不可修改。

client-query-buffer-limit

类型:整数

允许的值:1048576-1073741824

默认值:1073741824

单个客户端查询缓冲区的最大大小。立即发生更改。

proto-max-bulk-len

类型:整数

允许的值:1048576-536870912

默认值:536870912

单个元素请求的最大大小。立即发生更改。

MemoryDB 节点类型特定的参数

虽然大多数参数具有单个值,但是某些参数根据使用的节点类型具有不同的值。下表显示了每种节点类型的 maxmemory 的默认值。maxmemory 的值是节点上可供您使用(数据和其他用途)的最大字节数。

节点类型 Maxmemory
db.r7g.large 14037181030
db.r7g.xlarge 28261849702
db.r7g.2xlarge 56711183565
db.r7g.4xlarge 113609865216
db.r7g.8xlarge 225000375228
db.r7g.12xlarge 341206346547
db.r7g.16xlarge 450000750456
db.r6gd.xlarge 28261849702
db.r6gd.2xlarge 56711183565
db.r6gd.4xlarge 113609865216
db.r6gd.8xlarge 225000375228
db.r6g.large 14037181030
db.r6g.xlarge 28261849702
db.r6g.2xlarge 56711183565
db.r6g.4xlarge 113609865216
db.r6g.8xlarge 225000375228
db.r6g.12xlarge 341206346547
db.r6g.16xlarge 450000750456
db.t4g.small 1471026299
db.t4g.medium 3317862236
注意

所有 MemoryDB 实例类型必须在 Amazon 虚拟私有云(VPC)中创建。