Amazon MemoryDB for Redis 是一項 Amazon Web Services (AWS) 提供的與 Redis 相容、高耐用性且具備多可用區域 (Multi-AZ) 功能的記憶體內資料庫服務。它專為需要超快效能(亞毫秒級延遲)和高可用性,同時又要求資料持久性的現代應用程式而設計。
您可以將 MemoryDB 想像成是 ElastiCache for Redis 的進化版,它不僅提供 Redis 的極致速度,更強調資料的持久性 (Durability),使其能夠作為應用程式的主要資料庫 (Primary Database),而不僅僅是快取。
主要概念與特點:
- 與 Redis 相容:
- MemoryDB 完全相容於 Redis API 和資料結構。這意味著您現有的 Redis 應用程式、驅動程式和工具可以幾乎不需修改程式碼就能與 MemoryDB 協同工作。
- 支援 Redis 的所有核心功能,包括字串、雜湊、列表、集合、有序集合、地理空間索引等。
- 記憶體內效能與亞毫秒級延遲:
- 由於資料主要儲存在記憶體中,MemoryDB 能夠提供極快的讀寫速度,實現亞毫秒級的延遲。這對於需要即時響應的應用程式至關重要。
- 高耐用性與多可用區域 (Multi-AZ) 事務日誌:
- 這是 MemoryDB 與 ElastiCache for Redis 的關鍵區別。MemoryDB 透過在多個可用區域 (AZs) 中同步寫入分散式事務日誌 (Distributed Transaction Log) 來實現高耐用性。
- 每當資料寫入時,它都會被記錄並在所有 AZs 中的節點間複寫,確保即使發生節點故障或 AZ 故障,資料也不會丟失。這使得 MemoryDB 能夠作為主要資料庫使用。
- 高可用性與自動故障轉移:
- 叢集部署在多個 AZs 中,並自動在 AZ 內和 AZ 間複寫資料。
- 如果主節點發生故障,MemoryDB 會自動且快速地將流量轉移到健康的副本節點,通常在幾秒鐘內完成,確保應用程式的連續性。
- 彈性擴展:
- MemoryDB 支援分片 (Sharding),允許您根據需求水平擴展讀寫吞吐量和儲存容量。
- 您可以根據應用程式負載的變化,向上或向下擴展叢集的大小。
- 全受管服務:
- AWS 負責所有的底層基礎設施管理,包括叢集佈建、軟體安裝、修補、監控、備份、恢復、故障偵測和自動故障轉移。
- 這大大降低了運營負擔,讓您可以專注於應用程式開發和創新。
- 內建安全功能:
- 資料在靜態和傳輸中都受到加密保護。
- 整合 AWS IAM 進行身分驗證和授權。
- 支援 Amazon VPC 網路隔離。
MemoryDB 與 ElastiCache for Redis 的主要區別:
- 持久性:
- MemoryDB: 具有內建的資料持久性,透過分散式事務日誌確保資料不丟失,適合作為主要資料庫。
- ElastiCache for Redis: 預設是非持久性的記憶體快取。雖然可以選擇啟用 RDB/AOF 持久化,但它主要是為快取設計,如果發生全面性故障(如所有節點同時失效),仍有數據丟失的風險,通常將資料庫作為最終的真相來源。
- 用途:
- MemoryDB: 適合需要超低延遲、高吞吐量,同時要求資料持久性的應用程式。例如:即時交易處理、高頻率數據應用、會話管理、排行榜等。
- ElastiCache for Redis: 適合作為應用程式的快取層,用於減少後端資料庫負載,加速資料存取,且原始數據仍然儲存在持久性資料庫中。
典型使用案例:
- 即時應用程式: 如實時分析、交易撮合、即時競價系統。
- 遊戲應用程式: 用於存儲即時遊戲狀態、玩家會話、排行榜。
- 數位支付和金融應用: 處理高頻率、低延遲的交易數據,確保數據不丟失。
- 串流媒體: 緩存用戶會話和個性化內容。
- 任何需要 Redis 速度和資料持久性雙重保證的應用程式。