AWS ElastiCache 与 MemoryDB:你到底需要哪一个?

发布: (2025年12月25日 GMT+8 07:50)
4 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本内容,我将按照要求保留源链接并保持原始格式进行简体中文翻译。

决策指南

您的数据是短暂的(可以重新生成或丢失)吗?

  • → 使用 ElastiCache(≈ $12 / 月,适用于 cache.t4g.micro
  • → 使用 MemoryDB(≈ $25 +/ 月,持久存储)

这就是全部决策。

为什么我为 jo4.io 选择 ElastiCache

我需要 Redis 用于:

用例如果 Redis 死掉的影响
限流计数器 (user:123:requests:minute)计数器重置为 0 —— 用户得到一个新的分钟;影响不大
会话缓存会话过期 —— 用户需要重新登录;小不便
临时功能标志标志从数据库重新加载;短暂的卡顿

由于这些都是 短暂的,ElastiCache 是合适的选择。

何时考虑使用 MemoryDB

MemoryDB 适用于 Redis 充当 真相来源 的场景:

  • 不能重新计算的排行榜 / 排名
  • Redis 本身即为数据库的实时库存
  • 不能丢失的会话数据(例如金融应用)
  • 丢失消息即导致交易失败的消息队列

MemoryDB 的优势

  • 多可用区持久性(节点故障时数据仍然可用)
  • 事务日志持久性(写入被持久化)
  • 时间点恢复(Point‑in‑time recovery)

成本比较(小型生产工作负载)

服务节点类型约每月费用
ElastiCachecache.t4g.micro~$12
ElastiCachecache.t4g.small~$24
MemoryDBdb.t4g.small~$25
MemoryDBdb.r6g.large~$200+

MemoryDB 不提供 micro 级别,因此其最低成本更高。

示例:ElastiCache 集群的 Terraform 配置

resource "aws_elasticache_cluster" "redis" {
  cluster_id           = "jo4-prod-redis"
  engine               = "redis"
  engine_version       = "7.1"
  node_type            = "cache.t4g.micro"
  num_cache_nodes      = 1
  port                 = 6379
  parameter_group_name = "default.redis7"

  subnet_group_name    = aws_elasticache_subnet_group.redis.name
  security_group_ids   = [aws_security_group.redis.id]

  # Daily snapshot, 7‑day retention (even for ephemeral data)
  snapshot_retention_limit = 7
  snapshot_window          = "02:00-03:00"
  maintenance_window       = "sun:03:00-sun:04:00"
}

ElastiCache 的一个优势:在 VPC 内部访问时无需身份验证。

示例:Spring Boot Redis 配置(YAML)

spring:
  data:
    redis:
      host: ${REDIS_HOST}
      port: ${REDIS_PORT}
      timeout: 5000
      # No password needed – security group controls access

与 Redis Cloud 的比较

功能Redis CloudIn‑VPC ElastiCache
认证用户名/密码、TLS、凭证轮换不需要密码(安全组控制访问)
网络依赖外部服务无外部依赖
延迟较高(互联网)较低(VPC 内部)

Migration tips (Redis Cloud → ElastiCache)

  1. 更新连接设置:主机、端口,并 删除 授权。
  2. 接受缓存会从空开始——设计你的应用以优雅地处理空缓存。
  3. 对于速率限制和缓存,迁移是微不足道的,因为数据是临时的。

用例矩阵

用例推荐服务原因
速率限制ElastiCache临时的,可重新生成
会话缓存ElastiCache如果丢失可重新认证
页面缓存ElastiCache如果丢失可重新渲染
排行榜(唯一来源)MemoryDB排名无法重新生成
购物车(无数据库备份)MemoryDB用户数据不能丢失
实时库存MemoryDB业务关键
发布/订阅消息Depends如果消息丢失等于金钱损失 → MemoryDB

要点

  • ElastiCache:快速、廉价,适用于缓存和速率限制且可以接受数据丢失的场景。
  • MemoryDB:持久、成本更高,适用于 Redis 作为主要数据存储的情况。

别想太多。如果可以重新生成数据,就选 ElastiCache。

Back to Blog

相关文章

阅读更多 »

启动 AWS EC2 实例

介绍 本指南将带您完成启动 AWS EC2 实例、安装 Docker 并在 Docker 容器中运行 NGINX 的全过程。完成后您将…