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