DynamoDB vs Redis
DynamoDB 與 Redis 都被稱作 NoSQL,但它們位於技術堆疊的不同層。DynamoDB 是全受管、無伺服器的記錄資料庫,會把資料耐久地保存在磁碟上,橫跨一個 AWS 區域。Redis 是記憶體內的資料結構儲存——最常部署為位於耐久資料庫前方的快取、session 儲存或訊息代理。對許多系統而言,答案不是二選一,而是 DynamoDB 作為儲存、Redis(或 DAX)作為快取。
你該用 DynamoDB 還是 Redis?
把 DynamoDB 當成你耐久的記錄系統:結構化、絕不能遺失的項目,以鍵大規模讀寫。把 Redis 當成記憶體內層,用於微秒級讀取、豐富的資料結構(sorted set、stream、計數器)、快取、速率限制或 pub/sub。兩者常搭配使用——Redis(或 DynamoDB 自家的 DAX 快取)位於 DynamoDB 前方,而非取而代之。
DynamoDB vs Redis 一覽
| 特性 | DynamoDB | Redis |
|---|---|---|
| 資料模型 | NoSQL 鍵值與文件;型別化項目最大 400 KB,歸類於資料表中 | 記憶體內鍵值,帶型別值——string、hash、list、set、sorted set、stream 等 |
| 主要定位 | 耐久的記錄資料庫 | 記憶體內快取、session / 速率限制儲存、訊息代理;啟用持久化後也可作為主要儲存 |
| 查詢語言 / API | 原生 API(GetItem、Query、Scan、PutItem…)加上 PartiQL,一種 SQL 相容語言 | 依資料結構而定的指令(GET、HSET、ZADD、XADD…);無通用查詢語言或臨時 join |
| 耐久性 | 資料持久化至磁碟,並橫跨一個區域內的可用區複寫 | 預設為記憶體內;耐久性可選,透過 RDB 快照與 / 或 AOF 附加式記錄達成 |
| 一致性 | 預設最終一致;可依請求取得強一致讀取 | 單一節點對其鍵為強一致;replica 為非同步,因此 replica 讀取可能落後 |
| 擴充模式 | 由 AWS 管理的自動分區;無伺服器,可擴充輸送量與儲存 | 垂直擴充(受 RAM 限制)加上 Redis Cluster 跨節點水平分片;容量受記憶體所限 |
| 延遲特性 | 任何規模下皆為個位數毫秒讀寫 | 因資料位於 RAM 中,操作達微秒級 |
| 定價 / 維運模式 | 無伺服器的依請求付費或佈建容量加上儲存;僅限 AWS,無伺服器需管理 | 開源(自架)或受管(例如 Redis Cloud、ElastiCache);通常依節點記憶體 / 輸送量計費 |
| 最適合的工作負載 | 需要在大規模下維持一致延遲、以鍵存取且可預測的耐久記錄 | 快取、排行榜、計數器、速率限制、佇列、pub/sub、暫時性 session 資料 |
何時 DynamoDB 是較佳選擇
- 資料必須存活。 DynamoDB 會把每一次寫入持久化至磁碟,並橫跨可用區複寫。Redis 是記憶體優先;沒有 RDB/AOF 持久化時,一次重啟就會遺失資料,即使有持久化,它也是為速度而非為保證耐久性而調校。
- 你需要一個位於 AWS 上的記錄系統。 DynamoDB 原生整合 IAM、Lambda 與 Streams,並以組態方式提供 point-in-time recovery 與備份。
- 你的工作集大於記憶體。 DynamoDB 把資料存在磁碟上,因此成本隨儲存而非 RAM 擴充。Redis 的容量受你佈建的記憶體所限。
- 你想要無伺服器擴充。 隨需容量會依流量擴充,無需調整大小或修補。
何時 Redis 是較佳選擇
- 你需要微秒級延遲。 Redis 把資料保存在 RAM 中,因此操作在微秒內完成——比 DynamoDB 的個位數毫秒特性再快一階。
- 你需要豐富的記憶體內資料結構。 用於排行榜的 sorted set、原子計數器、用於佇列的 list,以及用於事件扇出的 stream,都是 Redis 的一等操作,而非你在耐久儲存中要自行建模的東西。
- 資料屬於暫時性或快取性質。 session token、速率限制時窗,以及可重新產生的計算結果,都契合 Redis 的記憶體內模型,通常搭配一個短 TTL。
- 你需要 pub/sub 或輕量訊息代理。 Redis 內建提供 publish/subscribe 與 stream 基元。
搭配使用
最常見的正式環境做法不是二選一,而是把它們分層:
- 把耐久記錄保留在 DynamoDB 中作為真實來源。
- 把 Redis 放在前方作為熱門鍵的讀取快取,或與 DynamoDB 並用於排行榜、計數器與速率限制。
- 如果你想要快取但不想自行維運 Redis,DynamoDB 提供 DynamoDB Accelerator (DAX)——一個全受管、與 DynamoDB API 相容的記憶體內快取,可在不變更應用程式的情況下,把最終一致讀取的延遲從毫秒降到微秒。DAX 為 read-through/write-through,並以 primary key 快取項目。
DAX 與 Redis 的取捨本身就是一種權衡:DAX 是 DynamoDB 專屬且可直接套用,而 Redis 是通用的資料結構儲存,你可跨多個資料來源使用,但必須自行維運,或付費給受管供應商代為運作。
使用 DynamoDB
一旦 DynamoDB 成為你的耐久儲存,DynoTable 就是一款原生桌面用戶端,可在 macOS、Windows 與 Linux 上瀏覽、編輯與查詢你的資料表。它會讀取你標準的 AWS 憑證鏈,因此無需遷移——把它指向你的區域與資料表,你的資料就留在 DynamoDB 中。它的 SQL Workbench 在 DynamoDB 的存取模式規則內表達關聯式形態的查詢,而它的 AI 助理則以你自己的 AWS Bedrock 憑證運作。
為了建立你快取與記錄程式碼所需的鍵條件、filter 與 update 運算式,免費的 DynamoDB Expression Builder 會產生可直接貼上的 SDK、CLI 與 PartiQL 輸出,無需安裝。DynoTable 是一款閉源的商業應用程式;本頁描述它做什麼,而非它如何建構。
FAQ
Redis 能取代 DynamoDB 嗎?
作為記錄系統通常不行。Redis 是記憶體優先,因此除非你啟用並調校其持久化,否則它是設計成快取或暫時儲存,而非耐久資料庫。DynamoDB 會把每一次寫入橫跨可用區持久化並複寫。許多團隊兩者並用:DynamoDB 存耐久資料,Redis(或 DAX)作為位於其前方的快速記憶體內層。
DynamoDB 和 Redis 哪個比較快?
Redis 每次操作較快,因為它從 RAM 以微秒供應資料,而 DynamoDB 目標是從耐久儲存做個位數毫秒的讀寫。如果你需要具備快取般延遲的 DynamoDB,DAX 能把最終一致讀取降到微秒,且不必離開 DynamoDB API。
DynamoDB 中相當於 Redis 快取的是什麼?
DynamoDB Accelerator (DAX) 是 AWS 為 DynamoDB 內建、全受管的記憶體內快取。它與 API 相容,因此既有的 DynamoDB 呼叫無需變更即可運作,並以 primary key 作為 read-through/write-through 層快取項目。它是 DynamoDB 專屬的,而 Redis 則是通用的資料結構儲存。
相關內容
- 學習何時使用 DynamoDB,以及 DynamoDB TTL 如何讓暫時性、快取性質的項目過期。
- 以single-table design為耐久存取模式建模。
- 用免費的 DynamoDB Expression Builder 建立運算式。
- 下載 DynoTable 以瀏覽、查詢與編輯你的 DynamoDB 資料表。
最後驗證於 2026-07-12,比對官方 AWS DynamoDB Developer Guide 與 Redis 文件。Redis 是其各自擁有者的商標;此處引用僅供識別之用。