# AWS - ElastiCache VS MemoryDB


這兩個服務還挺像的有時候我們會搞混,今天來整理一下 Amazon MemoryDB VS Amazon ElastiCache for Redis


# 共同點

  • 兩個都基於 Redis 屬於 Fully Managed in-memory 資料庫服務
  • 用來加速 App 效能,支援低延遲讀寫 (通常 < 1ms)
  • 都支援 Redis API

# 差異點

特性 ElastiCache MemoryDB
定位 快取 主資料庫
持久性 主要設計成快取,資料存放在 RAM,可選擇 AOF 持久化,停機或刪除時可能遺失資料 設計成持久性資料庫,在多 AZ 進行複寫,保證高可用與持久性,相當於 Redis + 分散式日誌儲存
高可用 Multi-AZ 與 Auto-Failover 支援,主要是確保快取不中斷 原生 Multi-AZ 複寫 (資料分散到所有 AZ),RPO = 0,RTO = 秒級
用途 Web Session Cache, 資料庫 Query Cache, 頻繁存取的暫存資料 主資料庫 (像 RDS),需要低延遲,高持久場景,金融交易,遊戲排行榜,即時通訊適用
資料一致性 最終一致性 (Cache 可丟資料) 強一致性 (複寫保證資料正確性)
成本 較便宜 (因為是 Cache 不用強一致多副本) 較貴 (因為每筆寫入都需要同步到多 AZ 複寫日誌)
最佳適用情境 加速後端 DB 查詢,Session Store,頻繁但可容忍遺失的資料 需要永續保存的 Redis DB,替代 RDB 的超低延遲方案,金融交易、電商訂單、即時遊戲後端

# 如何選擇

  • 如果只是 Cache (加速 MySQL、DynamoDB 或 API) -> ElastiCache
  • 如果需要把 Redis 當主資料庫,不能丟資料 -> MemoryDB

# 總結

  • ElastiCache - 快取解決方案 (便宜、快﹐可丟資料)
  • MemoryDB - 高可用持久性 Redis 資料庫 (比 RDS 快,但也更貴)