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

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

Redis OSS 的配置和限制

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

无服务器缓存

对于无服务器缓存,不使用参数组,所有 Redis OSS 配置都不可修改。以下 Redis OSS 参数已准备就绪:

名称 详细信息 描述
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 OSS 命令都可能返回 ____-BUSY 形式的错误。由于这种状态可能会干扰许多基本的 Redis OSS 操作,因此 ElastiCache 将首先发出 SCR IPT KILL 命令。如果不成功, ElastiCache 将强制重启 Redis OSS。

maxclients 65000 缓存上可以一次连接的最大客户端连接数。超过此数量后,连接不一定能成功。
maxmemory-policy volatile-lru 当达到缓存的内存限制时,按照 least-recently-used (LRU) 估计,设置了 TTL 的项目将被驱逐出去。
notify-keyspace-events (空字符串) 无服务器缓存目前不支持键空间事件。
port

主端口:6379

读取端口:6380

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

此外还有以下限制:

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

自行设计的集群

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