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

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

Redis 配置和限制

Redis 引擎提供了许多配置参数,其中一些参数可以在 ElastiCache for Redis 中修改,另一些则不可修改,以提供稳定的性能和可靠性。

无服务器缓存

无服务器缓存不使用参数组,而且所有 Redis 配置都不可修改。其中包括以下 Redis 参数:

名称 详细信息 描述
acl-pubsub-default

allchannels

此缓存上的 ACL 用户默认拥有 pubsub 频道权限。
client-output-buffer-limit

normal 0 0 0

pubsub 32mb 8mb 60

普通客户端没有缓冲区限制。如果 PUB/SUB 客户端的积压超过 32MiB,或者在 60 秒内积压超过 8MiB,则它们将断开连接。
client-query-buffer-limit 1 GiB 单个客户端查询缓冲区的最大大小。此外,客户端不能发布参数超过 4000 个的请求。
cluster-allow-pubsubshard-when-down yes 这样在缓存部分关闭时,缓存仍能为 pubsub 流量提供服务。
cluster-allow-reads-when-down yes 这样在缓存部分关闭时,缓存仍能为读取流量提供服务。
cluster-enabled yes 所有无服务器缓存都启用了集群模式,这使得它们可以在多个后端分片之间透明地将数据分区。所有槽都对客户端显示为属于单个虚拟节点。
cluster-require-full-coverage no 当键空间部分关闭时(即,至少有一个哈希槽无法访问),缓存将继续接受对仍在覆盖范围的部分键空间的查询。在 cluster slots 中,整个键空间将始终由单个虚拟节点“覆盖”。
lua-time-limit

5000

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

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

maxclients 65000 缓存上可以一次连接的最大客户端连接数。超过此数量后,连接不一定能成功。
maxmemory-policy volatile-lru 在达到缓存的内存限制时,将根据最近使用最少(LRU)原则估算值,对设置了 TTL 的项目进行驱逐。
notify-keyspace-events (空字符串) 无服务器缓存目前不支持键空间事件。
port

主端口:6379

读取端口:6380

无服务器缓存向两个端口传播相同的主机名。主端口允许写入和读取,而读取端口则允许使用命令 READONLY 实现更低延迟的最终一致读数。
proto-max-bulk-len 512 MiB 单元素请求的最大大小。
timeout 0 客户端不会在达到特定空闲时间后被强制断开连接,但在稳定状态期间,它们可能会出于负载均衡目的而断开连接。

此外还有以下限制:

名称 详细信息 描述
键名称长度 4 KiB 单个 Redis 键或频道名称的最大大小。引用大于此值的键的客户端将收到错误消息。
Lua 脚本大小 4 MiB 单个 Redis Lua 脚本的最大大小。尝试加载大于此值的 Lua 脚本将收到错误。
槽大小 32 GiB 单个 Redis 哈希槽的最大大小。客户端如果尝试在单个 Redis 槽上设置超过此值的更多数据,就会触发驱逐策略,如果没有键可供驱逐,则会收到内存不足(OOM)错误。

自行设计的集群

对于自行设计的集群,请参阅 Redis 特定的参数 以了解配置参数的默认值,以及哪些参数可供配置。通常建议使用默认值,除非您的特定使用案例要求覆盖这些值。