AWS ElastiCache 实战教程(2026 最新):Valkey / Redis 缓存选型、Serverless 与节点集群定价、从 0 搭建全流程

📅 · ChengziCloud - 一站式云端服务

Meta Description: AWS ElastiCache 实战教程:Valkey、Redis OSS、Memcached 三大引擎怎么选,Serverless 与节点集群怎么挑,含 2026 最新真实单价表、CLI 实操步骤、成本测算与 6 个省钱技巧。

> 关键词:AWS ElastiCache、AWS Redis 教程、AWS Valkey、ElastiCache Serverless、AWS 缓存服务、ElastiCache 定价、AWS 内存数据库、ElastiCache 省钱

---

一、先给结论:三句话决定你怎么选

如果你只想看答案,这是本文的决策口诀:

> 新项目一律选 Valkey;负载波动大、不想管运维就选 Serverless;负载稳定、要压成本就选节点集群 + Reserved;只有纯 KV 且不需要复制与持久化的老架构才考虑 Memcached。

理由是 2026 年 AWS 已经把 Valkey 摆到了默认引擎的位置:同一节点规格,Valkey 的按需单价正好是 Redis OSS 的 80%;Serverless 模式下 Valkey 的存储单价低 33%,最小计量存储还从 1 GB 降到 100 MB。 换句话说,从 Redis OSS 切到 Valkey,是一次不用改代码、只改端点就能拿到的 20%~33% 降价。

再补一条最容易被忽略的成本事实——这也是本文最值钱的一段:

> 在稳定负载下,节点集群的单位容量成本大约只有 Serverless 的 1/4。以美东(弗吉尼亚北部)Valkey 为例:Serverless 存储 $0.084/GB-小时 ≈ $61/GB·月;而 cache.m7g.large(6.38 GB 内存)节点按需 $0.1264/小时 ≈ $92/月,折合 $14.5/GB·月。比值约 4.2 倍。若再叠加三年全预付 Reserved(最高 55% 折扣),单位成本还能再降一半左右。

所以:Serverless 买的是"省心",节点集群买的是"单位成本"。搞反了这一条,账单很容易翻几倍。

---

二、ElastiCache 是什么:3 个引擎 × 2 种部署形态

Amazon ElastiCache 是 AWS 的全托管内存缓存服务,数据全部驻留内存,官方口径是微秒级读延迟、最高 99.99% 可用性 SLA,与 Valkey、Redis OSS、Memcached 协议完全兼容——你现有的代码、客户端库和工具基本不用改。

它和"自己装 Redis"的区别在于:硬件置备、软件打补丁、监控、备份恢复、故障切换全部由 AWS 托管;你只需要选引擎、选形态、选规格。

整体架构可以用下面这张图理解:

`text ┌─────────────────────────────────────┐ 应用层 │ EC2 / ECS / Lambda / EKS 应用容器 │ └───────────────┬─────────────────────┘ │ Redis / Valkey 协议 (TLS:6379) ┌───────────────▼─────────────────────┐ 缓存层 │ ElastiCache 集群 │ │ ┌─────────┐ ┌─────────┐ │ │ │ Primary │──▶│ Replica │ 最多 5 │ │ │ 可用区A │ │ 可用区B │ 个只读副本│ │ └─────────┘ └─────────┘ │ │ Multi-AZ 自动故障切换 │ └───────────────┬─────────────────────┘ │ 回源 (Cache Miss) ┌───────────────▼─────────────────────┐ 数据层 │ RDS / Aurora / DynamoDB │ └─────────────────────────────────────┘ `

三种引擎、两种形态,一共六种组合,但真正需要决策的只有两个问题:选哪个引擎选哪种形态

---

三、引擎选型:Valkey vs Redis OSS vs Memcached

| 对比维度 | Valkey | Redis OSS | Memcached | |---|---|---|---| | 协议兼容 | Redis 协议(Valkey 是 Redis 7.2 的社区分支) | Redis 协议 | Memcached 协议 | | 按需节点单价(美东,m7g.large) | $0.1264/小时 | $0.158/小时 | $0.158/小时 | | Serverless 存储单价(美东) | $0.084/GB-小时 | $0.125/GB-小时 | $0.125/GB-小时 | | Serverless ECPU 单价(美东) | $0.0023/百万 | $0.0034/百万 | $0.0034/百万 | | Serverless 最小计量存储 | 100 MB | 1 GB | 1 GB | | 只读副本 | 最多 5 个 | 最多 5 个 | ❌ 不支持 | | Multi-AZ 自动故障切换 | ✅ | ✅ | ❌ 不支持 | | Global Datastore 跨区域复制 | ✅(7.2 起) | ✅(5.0.6 起) | ❌ 不支持 | | 数据分层(内存 + NVMe SSD) | ✅(7.2 起) | ✅(6.2 起) | ❌ 不支持 | | 持久化(Durability,Multi-AZ 事务日志) | ✅(Valkey 9.0) | ❌ | ❌ | | Serverless 支持版本 | 7.2 及以上 | 4.0.10 ~ 7.1 | 1.4.5 及以上 | | 典型场景 | 新项目的默认选择 | 已有 Redis 生态与许可证 | 纯 KV、无副本需求的简单缓存 |

一句话总结:Memcached 在 2026 年已经是"历史遗留选项"——没有副本、没有多 AZ、没有跨区域复制、没有数据分层,单价也不比 Valkey 便宜。除非你的老代码只认 Memcached 协议,否则没有理由再选它。

Valkey 与 Redis OSS 的关系值得单独说清:Valkey 是 Linux 基金会托管、由原 Redis 核心开发者主导的开源分支,ElastiCache 对 Valkey 的定价比 Redis OSS 低 20%(节点)到 33%(Serverless),且你已有的 Redis OSS 预留节点会自动适用于同实例家族、同区域的 Valkey 节点——因为两者单价不同,这相当于让老的预留额度"凭空多出 20% 的价值"。

---

四、部署形态选型:Serverless vs 节点集群

| 对比维度 | ElastiCache Serverless | 节点集群(Node-based) | |---|---|---| | 容量规划 | 无需规划,自动按内存/算力/网络扩展 | 需要自己选节点规格与分片数 | | 扩缩容 | 即时扩缩,无需停机 | 在线分片(横向)、在线升规格(纵向) | | 运维 | 零基础设施管理,维护不断连 | 需要关注节点、AZ 分布与版本 | | 计费方式 | 按 数据存储 GB-小时 + ECPU 计费,无节点费 | 按节点-小时计费 | | 可用性 SLA | 99.99% | 多 AZ 配置下 99.99% | | 最小计量单位 | Valkey 100 MB / 其他 1 GB 每缓存 | 最小节点规格(如 0.5 GB) | | Reserved 折扣 | ❌ 不支持 | ✅ 最高 55%(1 年 / 3 年) | | 数据分层 | ❌ 不支持 | ✅ 仅 R6gd 节点 | | Global Datastore | ✅ 支持 | ✅ 支持 | | 单集群最大容量 | 由自动扩展决定 | 310 TiB(Valkey);数据分层下 982 TiB | | 成本可预测性 | 低(随流量波动) | (固定节点小时数) | | 适用场景 | 流量波动大、初创业务、免运维诉求强 | 稳态负载、需要极限单位成本、需要数据分层 |

选型判断只有三步:

1. 负载是不是"忽高忽低、峰谷差 3 倍以上"? 是 → Serverless;否 → 进入下一步。 2. 缓存容量是否长期超过 5 GB 且 7×24 稳定? 是 → 节点集群几乎一定更便宜。 3. 是否必须把成本压到极限(带 Reserved)或需要 SSD 数据分层? 是 → 只能是节点集群。

---

五、实战一:用 CLI 创建一个 Serverless 缓存

以下命令在本地装好 AWS CLI v2 并配置好凭证后即可执行。

先创建缓存,指定引擎、区域与自动扩展上限:

`bash // 创建 Valkey Serverless 缓存,存储上限 10 GB、算力上限 5000 ECPU/秒 aws elasticache create-serverless-cache \ --serverless-cache-name my-valkey-cache \ --engine valkey \ --cache-usage-limits '{"DataStorage":{"Maximum":10,"Unit":"GB"},"ECPUPerSecond":{"Maximum":5000}}' \ --region us-east-1 `

--cache-usage-limits 是必须留意的护栏:它决定了自动扩展的天花板。留空会用默认值,建议显式设置,否则流量异常时账单会跟着一起涨。

创建约 1~2 分钟后,查看连接端点:

`bash // 取出缓存端点(主机名 + 端口) aws elasticache describe-serverless-caches \ --serverless-cache-name my-valkey-cache \ --region us-east-1 \ --query 'ServerlessCaches[0].{Endpoint:Endpoint,Status:Status,Engine:Engine}' `

清空并查看缓存状态:

`bash // 确认缓存已进入 available 状态 aws elasticache describe-serverless-caches \ --serverless-cache-name my-valkey-cache \ --query 'ServerlessCaches[0].Status' `

最后用 redis-cli 验证连通性(Serverless 默认启用传输加密,需要 --tls):

`bash // 需要 TLS 连接,Serverless 不支持明文 redis-cli --tls -h my-valkey-cache-xxxx.serverless.use1.cache.amazonaws.com -p 6379 PING // 期望输出:PONG `

关键前置条件:ElastiCache 默认完全拒绝网络访问。你必须把应用所在的安全组加入缓存的入站规则,放行 6379 端口;同时缓存需要放在 VPC 内的子网组里,且应用与缓存最好在同一 VPC、同一可用区。

---

六、实战二:创建节点集群(1 主 2 副本 + 多 AZ)

生产环境更常见的是自建集群:控制分片数、副本数、节点规格与 AZ 分布。

`bash // 集群模式:1 个分片、每分片 2 个只读副本、开启自动故障切换与加密 aws elasticache create-replication-group \ --replication-group-id my-valkey-prod \ --replication-group-description "valkey prod cache" \ --engine valkey \ --cache-node-type cache.r7g.large \ --num-node-groups 1 \ --replicas-per-node-group 2 \ --automatic-failover-enabled \ --multi-az-enabled \ --at-rest-encryption-enabled \ --transit-encryption-enabled \ --security-group-ids sg-0123456789abcdef0 \ --region us-east-1 `

水平扩容只需改分片数,Valkey / Redis OSS 支持在线分片(Online Resharding),不用停机:

`bash // 把分片数从 1 扩到 3(在线,无需停机) aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-valkey-prod \ --node-group-count 3 \ --apply-immediately `

增加只读副本以分摊读流量(每个主节点最多 5 个副本):

`bash // 每分片副本数从 2 提到 3 aws elasticache increase-replica-count \ --replication-group-id my-valkey-prod \ --new-replica-count 3 \ --apply-immediately `

故障切换行为值得记住两个数字:主节点故障时,ElastiCache 会翻转 DNS 记录指向被提升的副本,新健康节点会在 6 分钟内加入集群;如果是 Global Datastore 的跨区域提升,官方口径是通常 1 分钟内完成,RPO(数据丢失窗口)通常小于 1 秒。应用只要写的是主节点端点,就不需要改重连逻辑。

---

七、应用接入:Python 客户端示例

以 Python 的 redis-py 连接启用 TLS 的 Valkey 缓存为例:

`python import redis

client = redis.Redis( host="my-valkey-cache-xxxx.serverless.use1.cache.amazonaws.com", port=6379, ssl=True, ssl_cert_reqs="required", decode_responses=True, )

client.set("user:1001:profile", "alice", ex=300) print(client.get("user:1001:profile")) print(client.ttl("user:1001:profile")) `

三个工程上的建议:

1. 连接池与超时必须有。缓存抖动时不要让线程池被连接等待拖死,客户端务必设置 socket_timeoutsocket_connect_timeout。 2. 键设计带业务前缀 + 版本号,例如 v2:user:1001:profile,方便灰度时整体切键空间。 3. 一定要设置 TTL。无过期键是缓存服务变内存数据库、然后 OOM 或费用失控的头号原因。

---

八、安全加固:四层纵深防御

ElastiCache 的安全模型分四层,全部加密特性不额外收费

| 层次 | 机制 | 配置要点 | |---|---|---| | 网络层 | VPC 安全组 + 网络 ACL | 默认拒绝所有访问,必须显式放行应用安全组的 6379 | | 身份层 | IAM 认证 + RBAC | 同一缓存内可对不同应用授予细粒度命令权限 | | 传输层 | TLS | 证书签发与续期由 AWS 自动管理,无需运维介入 | | 静态层 | AWS KMS 加密 | 支持服务托管密钥,也支持客户自管 CMK;每个集群可用不同密钥 |

特别提醒:ElastiCache 不像 RDS 那样暴露公网端点。如果从本地开发机连不上,99% 的原因是它本来就不该被公网访问——正确做法是通过堡垒机、VPN 或 VPC 内的跳板实例访问。

---

九、价格对比:2026 年官方真实单价

以下单价取自 AWS 官方价格表(美东弗吉尼亚北部 us-east-1 与香港 ap-east-1),单位美元。

表 1:Serverless 计费单价(每 GB-小时存储 + 每百万 ECPU)

| 计费项 | Valkey(美东) | Redis OSS / Memcached(美东) | Valkey(香港) | Redis OSS(香港) | |---|---|---|---|---| | 数据存储 | $0.084 / GB-小时 | $0.125 / GB-小时 | $0.111 / GB-小时 | $0.166 / GB-小时 | | ECPU | $0.0023 / 百万 | $0.0034 / 百万 | $0.0031 / 百万 | $0.0046 / 百万 | | 最小计量存储 | 100 MB | 1 GB | 100 MB | 1 GB | | 备份存储 | $0.085 / GiB·月 | $0.085 / GiB·月 | $0.085 / GiB·月 | $0.085 / GiB·月 |

表 2:节点集群按需单价(美元/节点·小时)

| 节点规格(内存) | Valkey 美东 | Redis OSS 美东 | Valkey 香港 | Redis OSS 香港 | |---|---|---|---|---| | cache.t4g.micro(0.5 GB) | $0.0128 | $0.016 | $0.0216 | $0.027 | | cache.t4g.medium(3.09 GB) | $0.052 | $0.065 | — | — | | cache.m7g.large(6.38 GB) | $0.1264 | $0.158 | $0.1721 | $0.2152 | | cache.r7g.large(13.07 GB) | $0.1752 | $0.219 | $0.2296 | $0.287 | | cache.r7g.xlarge(26.32 GB) | $0.3496 | $0.437 | $0.4601 | $0.5751 | | cache.r6gd.xlarge(26.32 GB + NVMe SSD) | $0.6248 | $0.781 | — | — |

表 3:折扣与附加费用

| 项目 | 官方口径 | |---|---| | Reserved 预留节点(1 年 / 3 年) | 无预付最高 48.2%、部分预付最高 52%、全预付最高 55%规格灵活,可在不同规格间通用;单区域最多 300 个 | | 数据分层(R6gd) | 官方示例中比纯内存节点省 52.5%,官方描述"最高超过 60%";总存储容量约 5 倍 | | Durability 同步写入(Valkey 9.0) | 在标准节点价基础上 +18%;异步写入不加价 | | Redis OSS 扩展支持(Extended Support) | 大版本 EOL 后第 1~2 年 +80%,第 3 年 +160% | | 备份存储 | $0.085/GiB·月;每个活跃缓存送 1 个免费快照;快照保留最长 35 天 | | 数据传输 | 同 AZ 的 EC2 ↔ ElastiCache 免费;跨 AZ 按 $0.01/GiB 计(只在 EC2 侧收);进出缓存节点本身不收数据传输费 | | Global Datastore | 功能本身不额外收费,只需支付主从集群与跨区域流量 |

---

十、成本测算:把单价算成月账单

场景 A:小型电商站点,稳态 3 GB 缓存

Serverless 方案:3 GB 常驻 = 3 × $0.084 × 730 小时 ≈ $184/月(加上请求 ECPU 费用)。 节点方案:cache.t4g.medium(3.09 GB)Valkey = $0.052 × 730 ≈ $38/月

→ 同样容量,节点方案便宜约 4.8 倍。这就是为什么"稳定负载不要用 Serverless"。

场景 B:内容站,白天 10 GB、夜间 1 GB

Serverless 方案:平均 4 GB 计量 = 4 × $0.084 × 730 ≈ $245/月,且完全不用管容量。 节点方案:最小要买 13 GB 级别(cache.r7g.large)= $0.1752 × 730 ≈ $128/月,但夜间资源闲置一半。

→ 峰谷差超过 5 倍时,Serverless 的"按用量付费"开始反超。

场景 C:高并发排行榜(官方算例复现)

官方给出的一个真实算例:100 GB 数据、50 万请求/秒、每个请求平均 3 个 ECPU,美东区域。结果是数据存储 $8.4/小时 + ECPU $12.42/小时 = $20.82/小时,折合月账单约 $15,200

同一类工作负载若改用节点集群(官方另一算例:r7g.xlarge 6 分片 × 2 节点 = 12 节点)为 $4.1952/小时,是 Serverless 的五分之一量级。高吞吐稳态工作负载,节点集群的成本优势是数量级的

结论一句话:容量小+波动大 → Serverless;容量大+吞吐高 → 节点集群 + Reserved。

---

十一、省钱 6 招(按性价比排序)

1. 把引擎换成 Valkey。节点价直接降 20%,Serverless 存储与 ECPU 降 33%,最小计量从 1 GB 降到 100 MB。这是一次改端点就能拿到的降价,不需要改代码。 老的 Redis OSS 预留节点还会自动继承到 Valkey。 2. 稳态容量买 Reserved。3 年全预付最高省 55%,且规格灵活(可在同区域不同规格间通用),不必为容量规划失误买单。一个 6.38 GB 的 m7g.large 三年全预付后有效小时价约 $0.057(官方示例口径),折合约 $6.5/GB·月。 3. 冷数据下沉到 SSD。R6gd 节点用 NVMe 存冷数据、内存存热数据,官方示例省 52.5%。适合"经常访问 20% 数据"的场景(会话、报表、推荐特征)。 4. 同 AZ 部署,消灭跨 AZ 流量费。跨 AZ 数据传出按 $0.01/GiB 计费,高吞吐缓存的这部分费用可能达到账单的 20%~30%。把应用与缓存放在同一 AZ 的同一子网组里。 5. 用免费额度和免费快照。每个活跃缓存赠送 1 个快照;2025-07-15 之前注册的账号还有 750 小时 cache.t3.micro + 每月 15 GB 免费出网流量(最长 12 个月)。 6. 及时升级引擎大版本,别交扩展支持溢价。Redis OSS 大版本 EOL 后第 1~2 年要多付 80%,第 3 年多付 160%。一个 $0.219/小时的老版本节点,进扩展支持后第一年就变成 $0.394/小时。

---

十二、7 个高频坑

1. 把 ElastiCache 当数据库用。除 Valkey 9.0 的 Durability 特性外,节点故障仍可能丢写。核心数据必须落 RDS / DynamoDB,缓存只做加速。 2. 误以为 Memcached 有副本。Memcached 没有复制、没有多 AZ、没有 Global Datastore、没有数据分层,节点挂了就是冷启动。 3. 忽略 Serverless 的最小计量存储。Redis OSS / Memcached 每个缓存最少按 1 GB 计费,Valkey 是 100 MB——小缓存场景这个差异会直接翻倍账单。 4. 不设自动扩展上限DataStorageECPUPerSecond 留空会走默认值,流量异常时费用失去护栏。 5. 应用与缓存不在同一 AZ。延迟上升、跨 AZ 流量费增加,双重损失。 6. 忘记安全组。ElastiCache 默认拒绝一切访问,安全组没配好时表现为"连接超时",容易被误判为服务故障。 7. 不做恢复演练。快照默认最长保留 35 天,恢复时会创建一个全新集群——但要记住 ElastiCache 的自动缓存快照在删除缓存时不保留,手动快照才会留下。

---

十三、常见问题 FAQ

Q: ElastiCache 和自己在 EC2 上装 Redis 相比,贵吗? A: 单看硬件单价,自建可能更便宜;但自建需要自己处理补丁、监控、故障切换、备份和跨 AZ 高可用。ElastiCache 的价值在于把这些"无差别的重活"托管掉,并在多 AZ 下提供 99.99% SLA。对绝大多数团队来说,省下的人力成本远高于差价。

Q: Serverless 和节点集群可以互相迁移吗? A: 可以。Serverless → 节点集群只需把应用的连接端点从 Serverless 端点改为集群端点;节点集群 → Serverless 可以把 S3 上的备份文件作为种子数据导入。Valkey 能直接恢复任意版本 Redis OSS 的备份,因为两者都用 Redis RDB 格式。

Q: 现在还有免费套餐吗? A: 分两种情况。2025 年 7 月 15 日之前注册的账号,历史上提供 750 小时 cache.t3.micro 节点 + 每月 15 GB 出网流量,最长 12 个月。2025 年 7 月 15 日之后注册的新账号,改为"免费计划 / 付费计划"二选一:免费计划提供 $100 额度,激活基础服务可再得最多 $100,合计最多 $200,额度需在 12 个月内用完。ElastiCache Serverless 和 Global Datastore 也已纳入免费计划覆盖范围。

Q: 单个集群最大能装多少数据? A: 官方口径:Valkey 单集群最大 310 TiB;启用数据分层后可到 982 TiB。这个量级远超绝大多数业务需求。

Q: 能做跨区域复制和容灾吗? A: 可以,用 Global Datastore:写入一个主区域,最多复制到 2 个从区域做低延迟本地读与容灾。跨区域复制通常 1 秒内完成,区域级故障时提升从集群通常 1 分钟内完成。该功能本身不额外收费,只需支付主从缓存费用与跨区域流量费。

Q: 缓存雪崩、击穿怎么防? A: 雪崩(大量键同时过期)→ 给 TTL 加随机抖动;击穿(热点键失效)→ 用互斥锁或逻辑过期;穿透(查不存在的键)→ 缓存空值或布隆过滤器。ElastiCache 侧还可以用多副本分摊读、用 Auto Scaling 应对洪峰。

Q: 香港 / 亚太区域有 ElastiCache 吗? A: 有。AWS 价格表覆盖 37 个区域,亚太包括香港 ap-east-1、台北 ap-east-2、东京 ap-northeast-1、首尔 ap-northeast-2、新加坡 ap-southeast-1、悉尼 ap-southeast-2、孟买 ap-south-1 等。香港区域单价比美东贵约 30%~40%(Valkey m7g.large:香港 $0.1721 vs 美东 $0.1264),但对中国大陆及东南亚用户的延迟优势通常更值得。

Q: 为什么我的 Serverless 缓存连接超时? A: 三个最常见原因:一是安全组没放行 6379;二是应用与缓存不在同一 VPC(或没打通 VPC Peering);三是没加 --tls / 客户端 ssl=True——Serverless 强制加密传输。

---

十四、延伸阅读

- AWS RDS 选型指南:MySQL / PostgreSQL / Aurora 怎么选 - AWS VPC 网络实战:子网、路由表、安全组一次讲透 - AWS EC2 选购教程:实例类型、预留实例与 Spot 省钱攻略 - AWS CloudWatch 监控告警实战

---

> ⚠️ 声明:本文价格数据采集于 2026 年 9 月,取自 AWS 官方价格表(美东 us-east-1 与香港 ap-east-1 区域),仅为公开官网参考价。AWS 价格随区域、官方调价与促销活动变动,请以 AWS 官网实时价格为准。除特别标注外,金额单位均为美元(USD)。

> 🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

> 本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多