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

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

Redis 特定的参数

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

Redis 7 参数更改

参数组系列:redis7

Redis 7 默认参数组如下所示:

  • default.redis7 – 对 Redis(已禁用集群模式)集群和复制组使用此参数组或从中派生的参数组。

  • default.redis7.cluster.on – 对 Redis(已启用集群模式)集群和复制组使用此参数组或从中派生的参数组。

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

名称 详细信息 描述
cluster-allow-pubsubshard-when-down

允许的值:yesno

默认值:yes

类型:字符串

可修改:是

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

如果设置为默认值“yes”(是),则允许节点在集群处于停机状态时提供发布订阅分片流量,只要它认为自己拥有插槽即可。

cluster-preferred-endpoint-type

允许的值:iptls-dynamic

默认值:tls-dynamic

类型:字符串

可修改:是

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

此值控制 MOVED/ASKING 请求返回的端点以及 CLUSTER SLOTSCLUSTER SHARDS 的端点字段。当该值设置为 ip 时,节点将传播其 IP 地址。当该值设置为 tls-dynamic 时,节点将在传输中加密启用时传播主机名,否则将传播 IP 地址。

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 来表示小哈希编码。

list-max-ziplist-size

允许的值:

默认值:-2

类型:整数

可修改:是

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

每个内部列表节点允许的条目数。

Redis 6.x 参数更改

参数组系列:redis6.x

Redis 6.x 默认参数组如下所示:

  • default.redis6.x – 对 Redis(已禁用集群模式)集群和复制组使用此参数组或从中派生的参数组。

  • default.redis6.x.cluster.on – 对 Redis(已启用集群模式)集群和复制组使用此参数组或从中派生的参数组。

注意

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

有关更多信息,请参阅 ElastiCache for Redis 版本 6.2(加强版)ElastiCache for Redis 版本 6.0(加强版)

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

名称 详细信息 描述
acl-pubsub-default (added in 6.2)

允许的值:resetchannelsallchannels

默认值:allchannels

类型:字符串

可修改:是

更改的生效范围:与集群关联的现有 Redis 用户将继续拥有现有的权限。需要更新用户或者重新启动集群以更新现有的 Redis 用户。

部署到此集群的 ACL 用户将默认拥有发布订阅频道权限。

cluster-allow-reads-when-down (added in 6.0)

默认值:no

类型:字符串

可修改:是

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

当设置为“yes(是)”时,Redis(已启用集群模式)复制组将继续处理读取命令,即使节点无法达到主节点的法定数量。

当设置为默认值“no(不)”时,复制组将拒绝所有命令。如果您使用的集群的节点组少于三个,或者您的应用程序可以安全地处理陈旧读取,我们建议将此值设置为“yes(是)”。

tracking-table-max-keys (added in 6.0)

默认值:1000000

类型:数字

可修改:是

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

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

当所跟踪的密钥被修改后,会向所有客户端发送失效消息,通知它们缓存的值不再有效。此值允许您指定此表的上限。超出此参数值后,将随机向客户端发送失效。应该调整此值以限制内存使用,同时仍对足够的密钥进行跟踪。在内存不足的情况下,密钥也会失效。

acllog-max-len (added in 6.0)

默认值:128

类型:数字

可修改:是

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

此值对应于 ACL 日志中的最大条目数。

active-expire-effort (added in 6.0)

默认值:1

类型:数字

可修改:是

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

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

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

lazyfree-lazy-user-del (added in 6.0)

默认值:no

类型:字符串

可修改:是

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

当该值设置为“yes(是)”时,DEL 命令的行为与 UNLINK 相同。

Redis 6.x 中删除的参数如下所示。

名称 详细信息 描述
lua-replicate-commands

允许的值:yes/no

默认值:yes

类型:布尔值

可修改:是

更改生效:立即

是否始终在 Lua 脚本中启用 Lua 效果复制

Redis 5.0.3 参数更改

参数组系列:redis5.0

Redis 5.0 默认参数组

  • default.redis5.0 – 对 Redis(已禁用集群模式)集群和复制组使用此参数组或从中派生的参数组。

  • default.redis5.0.cluster.on – 对 Redis(已启用集群模式)集群和复制组使用此参数组或从中派生的参数组。

Redis 5.0.3 中增加的参数
名称 详细信息 描述
rename-commands

默认值:none

类型:字符串

可修改:是

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

重命名的 Redis 命令列表,以空格分隔。以下是可用于重命名的命令的限制列表:

APPEND AUTH BITCOUNT BITFIELD BITOP BITPOS BLPOP BRPOP BRPOPLPUSH BZPOPMIN BZPOPMAX CLIENT CLUSTER COMMAND DBSIZE DECR DECRBY DEL DISCARD DUMP ECHO EVAL EVALSHA EXEC EXISTS EXPIRE EXPIREAT FLUSHALL FLUSHDB GEOADD GEOHASH GEOPOS GEODIST GEORADIUS GEORADIUSBYMEMBER GET GETBIT GETRANGE GETSET HDEL HEXISTS HGET HGETALL HINCRBY HINCRBYFLOAT HKEYS HLEN HMGET HMSET HSET HSETNX HSTRLEN HVALS INCR INCRBY INCRBYFLOAT INFO KEYS LASTSAVE LINDEX LINSERT LLEN LPOP LPUSH LPUSHX LRANGE LREM LSET LTRIM MEMORY MGET MONITOR MOVE MSET MSETNX MULTI OBJECT PERSIST PEXPIRE PEXPIREAT PFADD PFCOUNT PFMERGE PING PSETEX PSUBSCRIBE PUBSUB PTTL PUBLISH PUNSUBSCRIBE RANDOMKEY READONLY READWRITE RENAME RENAMENX RESTORE ROLE RPOP RPOPLPUSH RPUSH RPUSHX SADD SCARD SCRIPT SDIFF SDIFFSTORE SELECT SET SETBIT SETEX SETNX SETRANGE SINTER SINTERSTORE SISMEMBER SLOWLOG SMEMBERS SMOVE SORT SPOP SRANDMEMBER SREM STRLEN SUBSCRIBE SUNION SUNIONSTORE SWAPDB TIME TOUCH TTL TYPE UNSUBSCRIBE UNLINK UNWATCH WAIT WATCH ZADD ZCARD ZCOUNT ZINCRBY ZINTERSTORE ZLEXCOUNT ZPOPMAX ZPOPMIN ZRANGE ZRANGEBYLEX ZREVRANGEBYLEX ZRANGEBYSCORE ZRANK ZREM ZREMRANGEBYLEX ZREMRANGEBYRANK ZREMRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZREVRANK ZSCORE ZUNIONSTORE SCAN SSCAN HSCAN ZSCAN XINFO XADD XTRIM XDEL XRANGE XREVRANGE XLEN XREAD XGROUP XREADGROUP XACK XCLAIM XPENDING GEORADIUS_RO GEORADIUSBYMEMBER_RO LOLWUT XSETID SUBSTR

有关更多信息,请参阅ElastiCache for Redis 版本 5.0.6(加强版)

Redis 5.0.0 参数更改

参数组系列:redis5.0

Redis 5.0 默认参数组

  • default.redis5.0 – 对 Redis(已禁用集群模式)集群和复制组使用此参数组或从中派生的参数组。

  • default.redis5.0.cluster.on – 对 Redis(已启用集群模式)集群和复制组使用此参数组或从中派生的参数组。

Redis 5.0 中增加的参数
名称 详细信息 描述
stream-node-max-bytes

允许的值:0+

默认值:4096

类型:整数

可修改:是

更改生效:立即

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

允许的值:0+

默认值:100

类型:整数

可修改:是

更改生效:立即

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

允许的值:1 到 1000000

默认值:1000

类型:整数

可修改:是

更改生效:立即

将从主字典扫描中处理的最大 set/hash/zset/list 字段数
lua-replicate-commands

允许的值:yes/no

默认值:yes

类型:布尔值

可修改:是

更改生效:立即

是否始终在 Lua 脚本中启用 Lua 效果复制
replica-ignore-maxmemory

默认值:yes

类型:布尔值

可修改:否

确定副本是否通过不移出独立于主节点的项来忽略 maxmemory 设置

Redis 已在引擎版本 5.0 中重命名几个参数以响应社区反馈。有关更多信息,请参阅 Redis 5 中的新增功能。下表列出了新名称以及它们映射到早期版本的方式。

Redis 5.0 中已重命名的参数
名称 详细信息 描述
replica-lazy-flush

默认值:yes

类型:布尔值

可修改:否

以前的名称:slave-lazy-flush

在副本同步期间执行异步 flushDB。
client-output-buffer-limit-replica-hard-limit

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

类型:整数

可修改:否

以前的名称:client-output-buffer-limit-slave-hard-limit

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

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

类型:整数

可修改:否

以前的名称:client-output-buffer-limit-slave-soft-limit

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

默认值:60

类型:整数

可修改:否

以前的名称:client-output-buffer-limit-slave-soft-seconds

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

默认值:no

类型:字符串

可修改:否

以前的名称:slave-allow-chaining

确定 Redis 中的只读副本是否可以具有自己的只读副本。
min-replicas-to-write

默认值:0

类型:整数

可修改:是

以前的名称:min-slaves-to-write

更改生效:立即

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

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

min-replicas-max-lag

默认值:10

类型:整数

可修改:是

以前的名称:min-slaves-max-lag

更改生效:立即

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

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

close-on-replica-write

默认值:yes

类型:布尔值

可修改:是

以前的名称:close-on-slave-write

更改生效:立即

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

Redis 5.0 中已删除的参数
名称 详细信息 描述
repl-timeout

默认值:60

可修改:否

此版本中不提供参数。

Redis 4.0.10 参数更改

参数组系列: redis4.0

Redis 4.0.x 默认参数组

  • default.redis4.0 – 对 Redis(已禁用集群模式)集群和复制组使用此参数组或从中派生的参数组。

  • default.redis4.0.cluster.on – 对 Redis(已启用集群模式)集群和复制组使用此参数组或从中派生的参数组。

Redis 4.0.10 中已更改的参数
名称 详细信息 描述
maxmemory-policy

允许的值:allkeys-lruvolatile-lruallkeys-lfuvolatile-lfuallkeys-randomvolatile-randomvolatile-ttlnoeviction

默认值:volatile-lru

类型:字符串

可修改:是

发生更改:立即

在 2.6.13 版中增加了 maxmemory-policy。在版本 4.0.10 中增加了两个新允许的值:allkeys-lfu(将使用近似的 LFU 移出任何键);和 volatile-lfu(将使用近似的 LFU 移出具有过期设置的键)。在 6.2 版中,在推出 r6gd 节点系列以支持数据分层功能时,r6gd 节点类型仅支持 noevictionvolatile-lruallkeys-lru max-memory 策略
Redis 4.0.10 中增加的参数
名称 详细信息 描述
异步删除参数
lazyfree-lazy-eviction

允许的值:yes/no

默认值:no

类型:布尔值

可修改:是

发生更改:立即

Performs an asynchronous delete on evictions.
lazyfree-lazy-expire

允许的值:yes/no

默认值:no

类型:布尔值

可修改:是

发生更改:立即

Performs an asynchronous delete on expired keys.
lazyfree-lazy-server-del

允许的值:yes/no

默认值:no

类型:布尔值

可修改:是

发生更改:立即

Performs an asynchronous delete for commands which update values.
slave-lazy-flush

允许的值:N/A

默认值:no

类型:布尔值

可修改:否

Changes take place: N/A
Performs an asynchronous flushDB during slave sync.
LFU 参数
lfu-log-factor

允许的值:任意整数 > 0

默认值:10

类型:整数

可修改:是

发生更改:立即

Set the log factor, which determines the number of key hits to saturate the key counter.
lfu-decay-time

允许的值:任意整数

默认值:1

类型:整数

可修改:是

发生更改:立即

The amount of time in minutes to decrement the key counter.
有效的碎片整理参数
activedefrag

允许的值:yes/no

默认值:no

类型:布尔值

可修改:是

发生更改:立即

Enabled active defragmentation.
active-defrag-ignore-bytes

允许的值:10485760 – 104857600

默认值:104857600

类型:整数

可修改:是

发生更改:立即

Minimum amount of fragmentation waste to start active defrag.
active-defrag-threshold-lower

允许的值:1-100

默认值:10

类型:整数

可修改:是

发生更改:立即

Minimum percentage of fragmentation to start active defrag.
active-defrag-threshold-upper

允许的值:1-100

默认值:100

类型:整数

可修改:是

发生更改:立即

Maximum percentage of fragmentation at which we use maximum effort.
active-defrag-cycle-min

允许的值:1-75

默认值:25

类型:整数

可修改:是

发生更改:立即

Minimal effort for defrag in CPU percentage.
active-defrag-cycle-max

允许的值:1-75

默认值:75

类型:整数

可修改:是

发生更改:立即

Maximal effort for defrag in CPU percentage.
客户端输出缓冲区参数
client-query-buffer-limit

允许的值:1048576 – 1073741824

默认值:1073741824

类型:整数

可修改:是

发生更改:立即

Max size of a single client query buffer.
proto-max-bulk-len

允许的值:1048576 – 536870912

默认值:536870912

类型:整数

可修改:是

发生更改:立即

Max size of a single element request.

Redis 3.2.10 参数更改

参数组系列: redis3.2

对于 ElastiCache for Redis 3.2.10,未增加支持的参数。

Redis 3.2.6 参数更改

参数组系列: redis3.2

对于 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,支持以下附加参数。

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

默认值:否/是 *

类型:字符串

可修改:否

指示这是处于集群模式 [“yes(是)”] 的 Redis(已启用集群模式)复制组,还是处于非集群模式 [“no(否)”] 的 Redis(已启用集群模式)复制组。集群模式下的 Redis(已启用集群模式)复制组可跨最多 500 个节点组对数据进行分区。

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

  • default.redis3.2 – 默认值 no

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

.

cluster-require-full-coverage

默认值:no

类型:布尔值

可修改:是

更改生效:立即

如果设为 yes,集群模式下的 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 3.2.4 中已更改的参数(加强版)

参数组系列: redis3.2

对于 Redis 3.2.4,以下参数已更改。

名称 详细信息 更改
activerehashing

可修改:如果参数组未与任何缓存群集关联,则为“是”。否则不是必需。

可修改:否。

databases

可修改:如果参数组未与任何缓存群集关联,则为“是”。否则不是必需。

可修改:否。

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-replica-write,一切正常

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


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

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


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

在您可能禁用 close-on-replica-write 时

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

如前所述,在启用 close-on-replica-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 移出键时生成的事件)

  • Ag$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

类型:字符串

可修改:是

更改生效:立即

appendonly 设置为是时,控制将 AOF 输出缓冲区写入磁盘的频率:
  • no – 缓冲区根据需要刷新到磁盘中。

  • everysec – 缓冲区每秒刷新一次。这是默认模式。

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

  • 2.8.22 及更高版本不支持 Appendfsync。

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

类型:整数

可修改:否

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

t2.medium 原定设置:20000

类型:整数

可修改:否

t2.small 原定设置:20000

类型:整数

可修改:否

t2.micro 原定设置:20000

类型:整数

可修改:否

t4g.micro 原定设置:20000

类型:整数

可修改:否

t3.medium 原定设置:65000

类型:整数

可修改:否

t3.small 原定设置:65000

类型:整数

可修改:否

t3.micro 原定设置:20000

类型:整数

可修改:否

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管理预留内存

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.t3.micro 536870912 53687091 53687091
cache.t3.small 1471026299 147102629 147102629
cache.t3.medium 3317862236 331786223 331786223
cache.t4g.micro 536870912 53687091 53687091
cache.t4g.small 1471026299 147102629 147102629
cache.t4g.medium 3317862236 331786223 331786223
cache.m1.small 943718400 94371840 94371840
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.m5.large 6854542746 685454275 685454275
cache.m5.xlarge 13891921715 1389192172 1389192172
cache.m5.2xlarge 27966669210 2796666921 2796666921
cache.m5.4xlarge 56116178125 5611617812 5611617812
cache.m5.12xlarge 168715971994 16871597199 16871597199
cache.m5.24xlarge 337500562842 33750056284 33750056284
cache.m6g.large 6854542746 685454275 685454275
cache.m6g.xlarge 13891921715 1389192172 1389192172
cache.m6g.2xlarge 27966669210 2796666921 2796666921
cache.m6g.4xlarge 56116178125 5611617812 5611617812
cache.m6g.8xlarge 111325552312 11132555231 11132555231
cache.m6g.12xlarge 168715971994 16871597199 16871597199
cache.m6g.16xlarge 225000375228 22500037523 22500037523
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
cache.r4.large 13201781556 1320178155 1320178155
cache.r4.xlarge 26898228839 2689822883 2689822883
cache.r4.2xlarge 54197537997 5419753799 5419753799
cache.r4.4xlarge 108858546586 10885854658 10885854658
cache.r4.8xlarge 218255432090 21825543209 21825543209
cache.r4.16xlarge 437021573120 43702157312 43702157312
cache.r5.large 14037181030 1403718103 1403718103
cache.r5.xlarge 28261849702 2826184970 2826184970
cache.r5.2xlarge 56711183565 5671118356 5671118356
cache.r5.4xlarge 113609865216 11360986522 11360986522
cache.r5.12xlarge 341206346547 34120634655 34120634655
cache.r5.24xlarge 682485973811 68248597381 68248597381
cache.r6g.large 14037181030 1403718103 1403718103
cache.r6g.xlarge 28261849702 2826184970 2826184970
cache.r6g.2xlarge 56711183565 5671118356 5671118356
cache.r6g.4xlarge 113609865216 11360986522 11360986522
cache.r6g.8xlarge 225000375228 22500037523 22500037523
cache.r6g.12xlarge 341206346547 34120634655 34120634655
cache.r6g.16xlarge 450000750456 45000075046 45000075046
cache.r6gd.xlarge 28261849702 2826184970 2826184970
cache.r6gd.2xlarge 56711183565 5671118356 5671118356
cache.r6gd.4xlarge 113609865216 11360986522 11360986522
cache.r6gd.8xlarge 225000375228 22500037523 22500037523
cache.r6gd.12xlarge 341206346547 34120634655 34120634655
cache.r6gd.16xlarge 450000750456 45000075046 45000075046
cache.r7g.large 14037181030 1403718103 1403718103
cache.r7g.xlarge 28261849702 2826184970 2826184970
cache.r7g.2xlarge 56711183565 5671118356 5671118356
cache.r7g.4xlarge 113609865216 11360986522 11360986522
cache.r7g.8xlarge 225000375228 22500037523 22500037523
cache.r7g.12xlarge 341206346547 34120634655 34120634655
cache.r7g.16xlarge 450000750456 45000075046 45000075046
cache.m7g.large 6854542746 685454275 685454275
cache.m7g.xlarge 13891921715 1389192172 1389192172
cache.m7g.2xlarge 27966669210 2796666921 2796666921
cache.m7g.4xlarge 56116178125 5611617812 5611617812
cache.m7g.8xlarge 111325552312 11132555231 11132555231
cache.m7g.12xlarge 168715971994 16871597199 16871597199
cache.m7g.16xlarge 225000375228 22500037523 22500037523
cache.c7gn.large 3317862236 1403718103 1403718103
cache.c7gn.xlarge 6854542746 2826184970 2826184970
cache.c7gn.2xlarge 13891921715 5671118356 5671118356
cache.c7gn.4xlarge 27966669210 11360986522 11360986522
cache.c7gn.8xlarge 56116178125 22500037523 22500037523
cache.c7gn.12xlarge 84357985997 34120634655 34120634655
cache.c7gn.16xlarge 113609865216 45000075046 45000075046
注意

默认情况下,所有最新一代实例类型将在 Amazon Virtual Private Cloud VPC 中创建。

T1 实例不支持多可用区。

T1 和 T2 实例不支持 Redis AOF。

Redis 版本 2.8.22 及更高版本不支持 Redis 配置变量 appendonlyappendfsync