Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Redis 特定的参数

如果您没有为 Redis 集群指定参数组,则使用默认的参数组 (default.redis2.6default.redis2.8default.redis3.2)。您无法在默认参数组中更改任何参数的值;但是,您可以创建自定义参数组,然后随时将其分配给您的集群,只要可按条件修改的参数的值在两个参数组中相同。

注意

由于较新的 Redis 版本提供了更好更稳定的用户体验,使用 ElastiCache 控制台时弃用了 Redis 版本 2.6.13、2.8.6 和 2.8.19。我们建议不要使用这些 Redis 版本。如需使用其中一个版本,请将其与 AWS CLI 或 ElastiCache API 搭配使用。

有关更多信息,请参阅以下主题:

AWS CLI ElastiCache API

创建集群

(AWS CLI) 创建缓存集群

此操作不能用于创建启动了集群的复制组。

(ElastiCache API) 创建缓存集群

此操作不能用于创建启动了集群的复制组。

修改集群

(AWS CLI) 修改缓存集群

此操作不能用于创建启动了集群的复制组。

(ElastiCache API) 修改缓存集群

此操作不能用于创建启动了集群的复制组。

创建复制组

(AWS CLI) 从头开始创建具有副本的 Redis (已禁用集群模式) 集群

(AWS CLI) 从头开始创建具有副本的 Redis (已启用集群模式) 集群

(ElastiCache API) 从头开始创建具有副本的 Redis (已禁用集群模式) 集群

(ElastiCache API) 从头开始创建具有副本的 Redis (已启用集群模式) 集群

修改复制组

(AWS CLI) 修改复制组

此操作不能用于创建启动了集群的复制组。

(ElastiCache API) 修改复制组

此操作不能用于创建启动了集群的复制组。

Redis 3.2.6 参数更改

参数组系列: redis3.2

ElastiCache for Redis 3.2.6 不支持其他参数。

Redis 3.2.4 参数更改

参数组系列: redis3.2

从 Redis 3.2.4 开始,提供了两个默认参数组。

  • default.redis3.2 – 在运行 Redis 3.2.4 时,如果您需要创建 Redis (已禁用集群模式) 复制组并仍使用 Redis 3.2.4 的附加功能,请指定此参数组或从中派生的参数组。

  • default.redis3.2.cluster.on – 当您需要创建 Redis (已启用集群模式) 复制组时,请指定此参数组或从中派生的参数组。

Redis 3.2.4 的新参数

参数组系列: redis3.2

对于 Redis 3.2.4,支持以下附加参数。

名称 详细信息 说明
at-rest-encryption-enabled

默认值:false

类型:布尔值

可修改:否

指示在此 Redis 群集中启用 (true) 还是禁用 (false) 静态加密。在创建群集时,只能将该参数设置为 true

有关更多信息,请参阅 用于 Redis 的 Amazon ElastiCache 静态加密

transit-encryption-enabled

默认值:false

类型:布尔值

可修改:否

在设置为 true 时可启用传输中加密的标记。于 2017 年 8 月添加。

创建群集后,无法修改 transit-encryption-enabled 的值。要对群集启用传输中加密,必须在创建群集时将 transit-encryption-enabled 设置为 true。有关更多信息,请参阅 用于 Redis 的 Amazon ElastiCache 传输中加密

list-max-ziplist-size

默认值:-2

类型:整数

可修改:否

将采用特殊方式对列表进行编码以节省空间。可将每个内部列表节点允许的条目数指定为固定的最大大小或最大元素数。对于固定最大大小,请使用数字 -5 到 -1,含义如下:
  • -5:最大大小:64 Kb - 对于一般工作负载,不推荐使用

  • -4:最大大小:32 Kb - 不推荐

  • -3:最大大小:16 Kb - 不推荐

  • -2:最大大小:8 Kb - 推荐

  • -1:最大大小:4 Kb - 推荐

  • 正数表示每节点存储最多该数目的元素。

list-compress-depth

默认值:0

类型:整数

可修改:是

更改生效:立即

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

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

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

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

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

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

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

  • 等等

cluster-enabled

默认值:是/否

类型:布尔值

可修改:否

指示此为集群模式下的 Redis (已启用集群模式)复制组(是),还是非集群模式下的 Redis (已启用集群模式)复制组(否)。集群模式下的 Redis (已启用集群模式)复制组可跨最多 15 个节点组对数据进行分区。

† Redis 3.2.x 具有两个默认参数组。

  • default.redis3.2 – 默认值 no

  • default.redis3.2.cluster.on – 默认值 yes

.

cluster-require-full-coverage

默认值:no

类型:布尔值

可修改:是

更改生效:立即

默认情况下,集群模式下的 Redis (已启用集群模式)节点会在检测到至少一个未覆盖的哈希槽(没有节点为其提供服务)时停止接受查询。因此,如果集群部分出现故障,则整个集群将不可用。只要所有槽全都覆盖到,它就会自动恢复可用。

但有时,您需要让集群的子集能够继续接受仍覆盖到的键空间部分的查询。为此,请将 cluster-require-full-coverage 选项设为 no

hll-sparse-max-bytes

默认值:3000

类型:整数

可修改:是

更改生效:立即

HyperLogLog 稀疏表示形式字节限制。限制包括 16 个字节的标头。当使用稀疏表示形式的 HyperLogLog 超出此限制时,它会转换成密集表现形式。

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

我们建议使用 3000 左右的值来获得空间效率较高的编码,同时不会过多地降低 PFADD 效率,即稀疏编码的复杂度为 O(N)。如果不存在 CPU 瓶颈,但空间较为珍贵且数据集由许多 HyperLogLog 组成(基数在 0-15000 的范围内),则可将该值提高到 10000 左右。

reserved-memory-percent

默认值:25

类型:整数

可修改:是

更改生效:立即

为非数据使用预留的节点内存的百分比。默认情况下,Redis 数据占用会一直增长,直至消耗掉节点的所有内存。如果发生这种情况,可能会因内存分页过多而影响节点性能。通过预留内存,您可以为非 Redis 用途留出一些可用内存,以帮助减少分页量。

此参数特定于 ElastiCache,不是标准 Redis 发布版的一部分。

有关更多信息,请参阅 reserved-memory管理预留内存 (Redis)

Redis 3.2.4 中已更改的参数(加强版)

参数组系列: redis3.2

对于 Redis 3.2.4,以下参数已更改(从 Redis 3.2.4 开始)。

名称 详细信息 改变
appendonly

默认:关闭

可修改:否

如果您需要从早期版本的 Redis 升级,则必须先禁用 appendonly

appendfsync

默认:关闭

可修改:否

如果您需要从早期版本的 Redis 升级,则必须先禁用 appendfsync

repl-timeout

默认值:60

可修改:否

目前无法修改,默认值为 60。
tcp-keepalive

默认值:300

默认值为 0。

list-max-ziplist-entries

参数不再可用。

list-max-ziplist-value

参数不再可用。

Redis 2.8.24(加强版)增加的参数

参数组系列: redis2.8

Redis 2.8.24 没有增加支持的参数。

Redis 2.8.23(加强版)增加的参数

参数组系列: redis2.8

对于 Redis 2.8.23,支持以下附加参数。

名称 详细信息 说明
close-on-slave-write

默认值:yes

类型:字符串 (yes/no)

可修改:是

更改生效:立即

如果启用,尝试写入只读副本的客户端将会断开连接。

close-on-slave-write 的工作原理

Amazon ElastiCache 引入了 close-on-slave-write 参数,可以在由于将只读副本提升为主节点而使主节点和只读副本节点交换角色时,让您能够更好地控制群集的响应方式。

 图像:close-on-slave-write,一切正常

如果出于支持多可用区的复制组发生故障转移之外的任何其他原因,只读副本集群提升为主集群,则客户端将继续尝试写入终端节点 A。由于终端节点现在是只读副本的终端节点,这些写入将会失败。这是在 ElastiCache 引入 close-on-slave-write 之前的 Redis 行为以及当您禁用 close-on-slave-write 时的行为。

 图像:close-on-slave-write,写入失败

在启用 close-on-slave-write 的情况下,只要客户端尝试写入只读副本,客户端与集群的连接就会被关闭。您的应用程序逻辑应检测断开连接情况,检查 DNS 表,然后重新连接到主终端节点(现在是终端节点 B)。

 图像:close-on-slave-write,写入新的主集群

为何禁用 close-on-slave-write?

如果禁用 close-on-slave-write 会导致写入群集的操作失败,那么为什么您希望禁用 close-on-slave-write

如前所述,在启用 close-on-slave-write 的情况下,只要客户端尝试写入只读副本,客户端与集群的连接就会被关闭。由于与节点建立新连接需要一些时间,而且向副本发送写入请求而导致断开连接并重新连接也会影响到通过同一连接处理的读取请求的延迟,直到建立新的连接。因此,如果您的应用程序主要执行大量读取操作或者对延迟非常敏感,您可能更希望使客户端保持连接,以便不降低读取性能。

Redis 2.8.22(加强版)增加的参数

参数组系列: redis2.8

Redis 2.8.22 没有增加支持的参数。

重要

  • 从 Redis 版本 2.8.22 开始,repl-backlog-size 应用于主集群以及副本集群。

  • 从 Redis 版本 2.8.22 开始,不支持 repl-timeout 参数。如果此参数发生更改,ElastiCache 将使用默认值 (60s) 进行覆盖,如对 appendonly 执行的一样。

不再支持以下参数。

  • appendonly

  • appendfsync

  • repl-timeout

Redis 2.8.21 增加的参数

参数组系列: redis2.8

Redis 2.8.21 没有增加支持的参数。

Redis 2.8.19 增加的参数

参数组系列: redis2.8

Redis 2.8.19 没有增加支持的参数。

Redis 2.8.6 增加的参数

参数组系列: redis2.8

对于 Redis 2.8.6,支持以下附加参数。

名称 详细信息 说明
min-slaves-max-lag

默认值:10

类型:整数

可修改:是

更改生效:立即

主节点必须从只读副本收到 Ping 请求的秒数。如果此时间量已过,但主节点未收到 Ping,则不再将副本视为可用。如果可用副本数下降到低于 min-slaves-to-write,则主节点在此时停止接受写入。

如果此参数或 min-slaves-to-write 是 0,则主节点始终接收写入请求(即使无副本可用)。

min-slaves-to-write

默认值:0

类型:整数

可修改:是

更改生效:立即

使主节点可以从客户端接受写入所必需的可用只读副本的最小数目。如果可用副本数下降到低于此数字,则主节点不再接受写入请求。

如果此参数或 min-slaves-max-lag 是 0,则主节点始终接收写入请求(即使无副本可用)。

notify-keyspace-events

默认值:(空字符串)

类型:字符串

可修改:是

更改生效:立即

Redis 可以向客户端通知的密钥空间事件类型。每种事件类型由单个字母表示:

  • K - 密钥空间事件,发布时带有前缀 __keyspace@<db>__

  • E - 密钥事件类型事件,发布时带有前缀 __keyevent@<db>__

  • g - 通用的非特定命令,如 DELEXPIRERENAME

  • $ - 字符串命令

  • l - 列表命令

  • s - 集命令

  • h - 哈希命令

  • z - 排序集命令

  • x - 过期事件(每次密钥过期时生成的事件)

  • e - 移出事件(针对 maxmemory 移出密钥时生成的事件)

  • A - g$lshzxe 的别名

您可以使用这些事件类型的任何组合。例如,AKE 表示 Redis 可以发布所有事件类型的通知。

请勿使用上面未列出的任何字符;尝试这样操作会导致错误消息。

默认情况下,此参数设置为空字符串,这表示禁用了密钥空间事件通知。

repl-backlog-size

默认值:1048576

类型:整数

可修改:是

更改生效:立即

主节点积压缓冲区的大小(以字节为单位)。积压用于记录主节点上数据的更新。只读副本连接到主节点时,它尝试执行部分同步 (psync),其中它应用积压中的数据以与主节点同步。如果 psync 失败,则需要完整同步。

此参数的最小值为 16384。

注意

从 Redis 2.8.22 开始,此参数应用于主集群以及只读副本。

repl-backlog-ttl

默认值:3600

类型:整数

可修改:是

更改生效:立即

主节点保留积压缓冲区的秒数。从上一个副本节点断开连接时开始,积压中的数据将保持不变,直到 repl-backlog-ttl 过期。如果副本未在此时间内连接到主节点,则主节点会释放积压缓冲区。当副本最终重新连接时,它必须执行与主节点的完整同步。

如果此参数设置为 0,则永不释放积压缓冲区。

repl-timeout

默认值:60

类型:整数

可修改:是

更改生效:立即

表示超时期限(以秒为单位),适用于:
  • 同步过程中的批量数据传输(从只读副本的角度)

  • 主节点超时(从副本的角度)

  • 副本超时(从主节点的角度)

Redis 2.6.13 参数

参数组系列: redis2.6

Redis 2.6.13 是 ElastiCache 支持的第一个 Redis 版本。下表显示 ElastiCache 支持的 Redis 2.6.13 参数。

名称 详细信息 说明
activerehashing

默认值:yes

类型:字符串 (yes/no)

可修改:创建时

确定是否启用 Redis 的活动重新哈希功能。主哈希表每秒重新哈希十次;每个重新哈希操作消耗 1 毫秒的 CPU 时间。

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

appendonly

默认值:no

类型:字符串

可修改:是

更改生效:立即

启用或禁用 Redis 的仅附加文件功能 (AOF)。AOF 捕获在缓存中更改数据的任何 Redis 命令,并可用于从特定节点故障中恢复。

默认值为 no,这表示 AOF 已关闭。将此参数设置为 yes 可启用 AOF。

有关更多信息,请参阅 缓解故障

注意

cache.t1.micro 和 cache.t2.* 节点不支持仅附加文件 (AOF)。对于此类型的节点,将忽略 appendonly 参数值。

注意

对于多可用区复制组,不允许使用 AOF。

appendfsync

默认值:everysec

类型:字符串

可修改:是

更改生效:立即

控制将 AOF 输出缓冲区写入磁盘的频率:
  • no - 缓冲区根据需要刷新到磁盘中。

  • everysec - 缓冲区每秒刷新一次。这是默认值。

  • always — 每当集群中的数据修改时,缓冲区便会进行刷新。

重要

此参数的某些方面的值在 Redis 版本 3.2.4 中有所更改。请参阅Redis 3.2.4 中已更改的参数(加强版)

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

默认值:0

类型:整数

可修改:是

更改生效:立即

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

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

默认值:0

类型:整数

可修改:是

更改生效:立即

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

默认值:0

类型:整数

可修改:是

更改生效:立即

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

默认值:33554432

类型:整数

可修改:是

更改生效:立即

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

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

默认值:8388608

类型:整数

可修改:是

更改生效:立即

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

默认值:60

类型:整数

可修改:是

更改生效:立即

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

默认值:有关值的信息,请参阅 Redis 节点类型特定的参数

类型:整数

可修改:否

对于 Redis 只读副本:如果客户端的输出缓冲区达到指定字节数,则客户端将断开连接。
client-output-buffer-limit-slave-soft-limit

默认值:有关值的信息,请参阅 Redis 节点类型特定的参数

类型:整数

可修改:否

对于 Redis 只读副本:如果客户端的输出缓冲区达到指定字节数,仅当此条件保持 client-output-buffer-limit-slave-soft-seconds 时间时,客户端将断开连接。
client-output-buffer-limit-slave-soft-seconds

默认值:60

类型:整数

可修改:否

对于 Redis 只读副本:如果客户端的输出缓冲区保持 client-output-buffer-limit-slave-soft-limit 字节的时间长于此秒数,则客户端将断开连接。
databases

默认值:16

类型:整数

可修改:创建时

数据库拆分到的逻辑分区的数量。建议将此值保持较低。

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

hash-max-ziplist-entries

默认值:512

类型:整数

可修改:是

更改生效:立即

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

默认值:64

类型:整数

可修改:是

更改生效:立即

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

默认值:512

类型:整数

可修改:是

更改生效:立即

确定用于列表的内存量。条目少于指定数量的列表使用节省空间的特殊编码进行存储。
list-max-ziplist-value

默认值:64

类型:整数

可修改:是

更改生效:立即

确定用于列表的内存量。条目小于指定字节数的列表使用节省空间的特殊编码进行存储。
lua-time-limit

默认值:5000

类型:整数

可修改:否

Lua 脚本在 ElastiCache 执行操作以停止脚本之前的最大执行时间(单位:毫秒)。

如果超过 lua-time-limit,则所有 Redis 命令都会返回形式为 ____-BUSY 的错误。因为此状态可能会导致干扰许多必要 Redis 操作,所以 ElastiCache 会首先发送 SCRIPT KILL 命令。如果这样做不成功,则 ElastiCache 强制重新启动 Redis。

maxclients

默认值:65000

类型:整数

可修改:否

可以一次连接的最大客户端连接数。
maxmemory-policy

默认值:volatile-lru

类型:字符串

可修改:是

更改生效:立即

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

有效值为:volatile-lru | allkeys-lru | volatile-random | allkeys-random | volatile-ttl | noeviction

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

maxmemory-samples

默认值:3

类型:整数

可修改:是

更改生效:立即

对于最近最少 (LRU) 和生存时间 (TTL) 计算,此参数表示要检查的密钥的采样大小。默认情况下,Redis 选择 3 个密钥并使用最近最少使用的一个密钥。
reserved-memory

默认值:0

类型:整数

可修改:是

更改生效:立即

为非数据使用预留的内存总量,以字节为单位。默认情况下,Redis 节点将增长,直到它使用了节点的 maxmemory(请参阅Redis 节点类型特定的参数)。如果发生这种情况,可能会因内存分页过多而影响节点性能。通过预留内存,您可以为非 Redis 用途留出一些可用内存,以帮助减少分页量。

此参数特定于 ElastiCache,不是标准 Redis 发布版的一部分。

有关更多信息,请参阅 reserved-memory-percent管理预留内存 (Redis)

set-max-intset-entries

默认值:512

类型:整数

可修改:是

更改生效:立即

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

默认值:no

类型:字符串

可修改:否

确定 Redis 中的只读副本是否可以具有自己的只读副本。
slowlog-log-slower-than

默认值:10000

类型:整数

可修改:是

更改生效:立即

Redis 慢速日志功能记录的命令的最大执行时间(单位:微秒)。
slowlog-max-len

默认值:128

类型:整数

可修改:是

更改生效:立即

Redis 慢速日志的最大长度。
tcp-keepalive

默认值:0

类型:整数

可修改:是

更改生效:立即

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

重要

此参数的某些方面在 Redis 版本 3.2.4 中有所更改。请参阅 Redis 3.2.4 中已更改的参数(加强版)

timeout

默认值:0

类型:整数

可修改:是

更改生效:立即

节点在超时之前等待的秒数。值为:
  • 0 –从不断开空闲客户端。

  • 1-19 – 无效值。

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

zset-max-ziplist-entries

默认值:128

类型:整数

可修改:是

更改生效:立即

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

默认值:64

类型:整数

可修改:是

更改生效:立即

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

注意

如果您没有为 Redis 2.6.13 集群指定参数组,则将使用默认的参数组 (default.redis2.6)。您不能在默认的参数组中更改任何参数的值;但是,您始终可以创建自定义参数组,然后随时将其分配给您的集群。

Redis 节点类型特定的参数

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

注意

无法修改 maxmemory 参数。

节点类型 maxmemory client-output-buffer-limit-slave-hard-limit client-output-buffer-limit-slave-soft-limit
cache.t1.micro 142606336 14260633 14260633
cache.t2.micro 581959680 58195968 58195968
cache.t2.small 1665138688 166513868 166513868
cache.t2.medium 3461349376 346134937 346134937
cache.m1.small 943718400 943718400 943718400
cache.m1.medium 3093299200 309329920 309329920
cache.m1.large 7025459200 702545920 702545920
cache.m1.xlarge 14889779200 1488977920 1488977920
cache.m2.xlarge 17091788800 1709178880 1709178880
cache.m2.2xlarge 35022438400 3502243840 3502243840
cache.m2.4xlarge 70883737600 7088373760 7088373760
cache.m3.medium 2988441600 309329920 309329920
cache.m3.large 6501171200 650117120 650117120
cache.m3.xlarge 14260633600 1426063360 1426063360
cache.m3.2xlarge 29989273600 2998927360 2998927360
cache.m4.large 6892593152 689259315 689259315
cache.m4.xlarge 15328501760 1532850176 1532850176
cache.m4.2xlarge 31889126359 3188912636 3188912636
cache.m4.4xlarge 65257290629 6525729063 6525729063
cache.m4.10xlarge 166047614239 16604761424 16604761424
cache.c1.xlarge 6501171200 650117120 650117120
cache.r3.large 14470348800 1468006400 1468006400
cache.r3.xlarge 30513561600 3040870400 3040870400
cache.r3.2xlarge 62495129600 6081740800 6081740800
cache.r3.4xlarge 126458265600 12268339200 12268339200
cache.r3.8xlarge 254384537600 24536678400 24536678400

注意

t2 实例不支持 Redis 备份/还原。

t1 和 t2 实例不支持 AOF 或多可用区。