DynamoDB 可以當作快取使用嗎?

可以。DynamoDB 快速的鍵值查找與 TTL,讓它成為一個紮實的持久性快取 — 適合放工作階段、token 與計算結果。若要次毫秒級的讀取,就把它跟 DynamoDB Accelerator(DAX)配成一對;DAX 是一個全受管的記憶體內寫穿式快取,擋在資料表前面,以微秒回傳最終一致的讀取,而且完全不需要快取失效的程式碼。

把 DynamoDB 當作持久性快取

因為讀取是依索引鍵、且延遲是個位數毫秒,DynamoDB 很適合當作持久的快取層。TTL 會替你讓過期的項目失效,所以快取起來的工作階段或預先算好的結果會自己清乾淨。

加上 DAX 換取微秒級

DAX 是一個坐在 DynamoDB 前面的記憶體內快取:

  • 讀穿/寫穿 — 它替你管理填充與失效。
  • 微秒級讀取 — 對最終一致的讀取最多可有 10 倍的改善。
  • API 相容 — 應用程式只需要極少的改動。

DAX 在替你省錢之前先花你多少

DAX 是一筆買延遲的支出。把價錢算出來,你會發現除非讀取量非常大,否則它根本不會開始省錢。

在 us-east-1,一個 dax.t3.small 節點是每小時 $0.04,而 AWS 建議正式環境至少跨可用區域擺三個,因為三個才是讓叢集具備容錯能力的數字。那就是每月 $87.60。以隨需模式對一個 4 KB 以內的項目做一次最終一致讀取要價 $0.0000000625,所以同樣的 $87.60 可以直接向資料表買到 14 億次讀取,或者整個月持續每秒 533 次。

而且那個數字還美化了 DAX:它假設每一次讀取都命中快取,但實務上每一次未命中都會在叢集費用之上再多算一次資料表讀取。單節點的開發用叢集是每月 $29.20,也就是每秒 178 次讀取,而 AWS 不建議正式環境少於三個節點,因為一或兩個節點的叢集可能直接失去它快取的資料。

TTL 免費,但不即時

自己讓一筆項目過期要花掉一個寫入單位;對 1 KB 以內的項目做一百萬次 DeleteItem 是 $0.63。TTL 做同樣的工作卻不消耗寫入輸送量,這就是在快取場景裡採用它的務實理由。

時機才是那個陷阱。AWS 通常在到期後的幾天內刪除過期項目,所以你的應用程式認定已經消失的項目,儲存費還在照算,而帳單追的是刪除延遲,而不是你設的那個 TTL。以每秒 1,000 個 1 KB 的項目、一小時 TTL 來快取,存活集合是 3.4 GB,每月 $0.86;而兩天的延遲會在旁邊停放 165 GB 的死項目,每月 $41.19。過期項目在被實際移除之前,也還會持續出現在 QueryScan 結果裡,所以請在讀取時對到期屬性做篩選,不要盲目相信它。

何時適合,何時不適合

它非常適合能容忍最終一致性的重讀取工作負載(DAX 提供的是最終一致的資料)。如果你每一次讀取都需要強一致性,就直接走資料表。DAX 節點彼此之間也是最終一致地複寫,所以打到同一個叢集的兩個用戶端,可能會短暫地對同一個索引鍵讀到不同的值。

深入了解

請讀 DynamoDB TTLDynamoDB 一致性下載 DynoTable 來檢視你的快取資料表。

參考資料

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

成本計算於 2026-07-28。DAX 的節點小時費率讀自 AWS Price List API(us-east-1、dax.t3.small、$0.040),讀取、寫入與儲存費率則來自我們定價計算機所同步的同一份來源;上方的算式是我們自己的,而每一項輸入都寫在這一頁上。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。