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 快,但也更貴)