发动机特定参数 - Amazon MemoryDB

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

发动机特定参数

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

Valkey 7 和 Redis OSS 7 参数发生了变化

注意

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

参数组家族:memorydb_valkey7

在 Valkey 7 和 Redis 7 中添加的参数OSS如下所示。

名称 详细信息 描述
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

类型:整数

可修改:是

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

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

search-enabled

允许的值:yes, no

默认:no

类型:字符串

可修改:是

更改生效:仅适用于新集群。

最低引擎版本:7.1

如果设置为 “是”,则会启用 “搜索” 功能。

search-query-timeout-ms

允许的值:1 - 60,000

默认:10,000

类型:整数

可修改:是

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

最低引擎版本:7.1

允许搜索查询运行的最大时间(以毫秒为单位)。

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

名称 详细信息 描述
activerehashing

可修改:no。在 Redis OSS 7 中,此参数默认处于隐藏状态并处于启用状态。为了禁用此参数,您需要创建一个支持案例

可修改:是。

在 Redis OSS 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 OSS 6 参数

注意

在 Redis OSS 引擎版本 6.2 中,当引入 r6gd 节点系列仅与之配合数据分层使用时noevictionvolatile-lrur6gd 节点allkeys-lru类型支持最大内存策略。

参数组系列: memorydb_redis6

在 Redis OSS 6 中添加的参数如下所示。

名称 详细信息 描述
maxmemory-policy

类型:STRING

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

默认值:noeviction

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

有关更多信息,请参阅使用 Redis OSS 作为LRU缓存使用 Redis OSS 作为LRU缓存。

list-compress-depth

类型:INTEGER

允许的值: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

类型:INTEGER

允许的值:1-16000

默认值:3000

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

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

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

lfu-log-factor

类型:INTEGER

允许的值:1-

默认值:10

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

lfu-decay-time

类型:INTEGER

允许的值:0-

默认值:1

递减LFU驱逐策略密钥计数器的时间(以分钟为单位)。

active-defrag-max-scan-fields

类型:INTEGER

允许的值:1-1000000

默认值:1000

在主动碎片整理期间,将从主字典扫描中处理的最大set/hash/zset/list字段数。

active-defrag-threshold-upper

类型:INTEGER

允许的值:1-100

默认值:100

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

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

类型:INTEGER

允许的值:0-

默认值:33554432

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

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

类型:INTEGER

允许的值:0-

默认值:8388608

对于 Redis OSS 发布/订阅客户端:如果客户端的输出缓冲区达到指定的字节数,则客户端将断开连接,但前提是这种情况持续存在 client-output-buffer-limit-pubsub-soft-seconds.

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

类型:INTEGER

允许的值:0-

默认值:60

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

timeout

类型:INTEGER

允许的值:0,20-

默认:0

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

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

  • 1-19 – 无效值。

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

notify-keyspace-events

类型:STRING

允许的值:NULL

默认:NULL

Redis OSS 要通知 Pub/Sub 客户端的密钥空间事件。默认情况下,所有通知处于禁用状态。

maxmemory-samples

类型:INTEGER

允许的值:1-

原定设置值:3

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

slowlog-max-len

类型:INTEGER

允许的值:0-

默认值:128

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

activerehashing

类型:STRING

允许的值:yes、no

默认值:yes

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

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

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

类型:INTEGER

允许的值:0-

默认:0

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

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

类型:INTEGER

允许的值:0-

默认:0

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

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

类型:INTEGER

允许的值:0-

默认:0

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

tcp-keepalive

类型:INTEGER

允许的值:0-

默认:300

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

active-defrag-cycle-min

类型:INTEGER

允许的值:1-75

默认:5

碎片整理工作量最小,以百分比表示CPU。

stream-node-max-bytes

类型:INTEGER

允许的值:0-

默认值:4096

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

stream-node-max-entries

类型:INTEGER

允许的值:0-

默认值:100

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

lazyfree-lazy-eviction

类型:STRING

允许的值:yes、no

默认值:no

对移出执行异步删除。

active-defrag-ignore-bytes

类型:INTEGER

允许的值:1048576-

默认值:104857600

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

lazyfree-lazy-expire

类型:STRING

允许的值:yes、no

默认值:no

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

active-defrag-threshold-lower

类型:INTEGER

允许的值:1-100

默认值:10

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

active-defrag-cycle-max

类型:INTEGER

允许的值:1-75

默认值:75

碎片整理的最大工作量百分比。CPU

lazyfree-lazy-server-del

类型:STRING

允许的值:yes、no

默认值:no

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

slowlog-log-slower-than

类型:INTEGER

允许的值:0-

默认值:10000

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

hash-max-ziplist-entries

类型:INTEGER

允许的值:0-

默认值:512

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

hash-max-ziplist-value

类型:INTEGER

允许的值:0-

默认值:64

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

set-max-intset-entries

类型:INTEGER

允许的值:0-

默认值:512

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

zset-max-ziplist-entries

类型:INTEGER

允许的值:0-

默认值:128

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

zset-max-ziplist-value

类型:INTEGER

允许的值:0-

默认值:64

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

tracking-table-max-keys

类型:INTEGER

允许的值:1-100000000

默认值:1000000

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

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

acllog-max-len

类型:INTEGER

允许的值:1-10000

默认值:128

ACL日志中的最大条目数。

active-expire-effort

类型:INTEGER

允许的值:1-10

默认值:1

Redis 通过两种机制OSS删除已超过其存活时间的密钥。一种机制是,访问密钥并发现其已过期。另一种机制是,周期性任务对密钥进行采样,并使那些超过其存活时间的密钥过期。此参数定义 Redi OSS s 为使定期作业中的项目过期所花费的工作量。

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

lazyfree-lazy-user-del

类型:STRING

允许的值:yes、no

默认值:no

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

activedefrag

类型:STRING

允许的值:yes、no

默认值:no

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

maxclients

类型:INTEGER

允许的值:65000

默认值:65000

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

client-query-buffer-limit

类型:INTEGER

允许的值:1048576-1073741824

默认值:1073741824

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

proto-max-bulk-len

类型:INTEGER

允许的值: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 实例类型都必须在亚马逊虚拟私有云中创建。VPC