DynamoDB vs Redis
DynamoDB と Redis はどちらも NoSQL と呼ばれますが、スタックの中で異なる階層に位置します。DynamoDB はフルマネージドでサーバーレスな記録システムであり、AWS リージョン全体でデータをディスク上に永続的に保持します。Redis はインメモリのデータ構造ストアであり、多くの場合、永続性のあるデータベースの前段にキャッシュ、セッションストア、メッセージブローカーとして配置されます。多くのシステムでは、答えはどちらか一方ではなく、DynamoDB をストアとして、Redis(または DAX)をキャッシュとして組み合わせることです。
Should you use DynamoDB or Redis?
DynamoDB は永続性のある記録システムとして使います。失ってはならない構造化されたアイテムを、キーによって大規模に読み書きする用途です。Redis はインメモリ層として使います。マイクロ秒の読み取り、豊富なデータ構造(ソート済みセット、ストリーム、カウンター)、キャッシュ、レート制限、pub/sub などです。両者は一般的に組み合わせて使われ、Redis(または DynamoDB 独自の DAX キャッシュ)は DynamoDB を置き換えるのではなく、その前段に配置されます。
DynamoDB vs Redis の概要
| 特性 | DynamoDB | Redis |
|---|---|---|
| データモデル | NoSQL のキーバリューおよびドキュメント。最大 400 KB の型付きアイテムをテーブルにまとめる | インメモリのキーバリューで型付きの値(文字列、ハッシュ、リスト、セット、ソート済みセット、ストリームなど) |
| 主な役割 | 永続性のある記録システム | インメモリキャッシュ、セッション/レート制限ストア、メッセージブローカー。永続化を有効にすればプライマリストアにもなる |
| クエリ言語 / API | ネイティブ API(GetItem、Query、Scan、PutItem など)に加え、SQL 互換言語の PartiQL | データ構造ごとのコマンド(GET、HSET、ZADD、XADD など)。汎用的なクエリ言語やアドホックな結合はない |
| 永続性 | データはディスクに永続化され、リージョン内の複数のアベイラビリティーゾーンにレプリケートされる | デフォルトはインメモリ。永続性は RDB スナップショットや AOF 追記ログによりオプションで有効化 |
| 整合性 | デフォルトは結果整合性。リクエストごとに強い整合性のある読み取りが可能 | 単一ノードは自ノードのキーに対して強い整合性を持つ。レプリカは非同期のため、レプリカ読み取りは遅延しうる |
| スケーリングモデル | AWS が管理する自動パーティショニング。サーバーレスで、スループットとストレージをスケール | 垂直(RAM に制約)に加え、Redis Cluster によるノード間の水平シャーディング。容量はメモリに制約される |
| レイテンシプロファイル | あらゆる規模で 1桁ミリ秒の読み書き | データが RAM 上にあるためマイクロ秒のオペレーション |
| 料金 / 運用モデル | サーバーレスの従量課金またはプロビジョンドキャパシティに加えストレージ。AWS のみ、運用するサーバーなし | オープンソース(セルフホスト)またはマネージド(Redis Cloud、ElastiCache など)。通常はノードのメモリ/スループットで課金 |
| 最適なワークロード | 予測可能なキーアクセスで、大規模でも一貫したレイテンシを必要とする永続的なレコード | キャッシュ、リーダーボード、カウンター、レート制限、キュー、pub/sub、一時的なセッションデータ |
DynamoDB が適している場合
- データが失われてはならない場合。 DynamoDB はすべての書き込みをディスクに永続化し、複数のアベイラビリティーゾーンにレプリケートします。Redis はインメモリを第一とし、RDB/AOF による永続化がなければ再起動でデータが失われ、永続化を有効にしても、保証された永続性より速度を優先して調整されています。
- AWS 上で記録システムが必要な場合。 DynamoDB は IAM、Lambda、ストリームとネイティブに統合され、ポイントインタイムリカバリやバックアップを設定として提供します。
- ワーキングセットがメモリより大きい場合。 DynamoDB はデータをディスクに保存するため、コストは RAM ではなくストレージに応じてスケールします。Redis の容量はプロビジョンしたメモリに制約されます。
- サーバーレスなスケーリングが欲しい場合。 オンデマンドキャパシティはトラフィックに合わせてスケールし、サイジングやパッチ適用が不要です。
Redis が適している場合
- マイクロ秒のレイテンシが必要な場合。 Redis はデータを RAM に保持するため、オペレーションはマイクロ秒で完了します。DynamoDB の 1桁ミリ秒のプロファイルよりも一段速いです。
- 豊富なインメモリのデータ構造が必要な場合。 リーダーボード向けのソート済みセット、アトミックなカウンター、キュー向けのリスト、イベントのファンアウト向けのストリームは、Redis の第一級のオペレーションであり、永続性のあるストアでモデリングするものではありません。
- データが一時的、またはキャッシュ的な場合。 セッショントークン、レート制限ウィンドウ、再生成可能な計算結果は、Redis のインメモリモデルに適し、多くの場合は短い TTL を伴います。
- pub/sub や軽量なメッセージブローカーが必要な場合。 Redis は publish/subscribe とストリームのプリミティブをそのまま提供します。
併用する
最も一般的な本番パターンは、どちらか一方を選ぶことではなく、両者を重ねることです。
- 永続的なレコードを DynamoDB に信頼できる情報源として保持します。
- Redis を前段に配置してホットキーの読み取りキャッシュとして使う、あるいは DynamoDB と併せてリーダーボード、カウンター、レート制限に使います。
- Redis を自分で運用せずにキャッシュしたい場合、DynamoDB は DynamoDB Accelerator(DAX) を提供します。これはフルマネージドで DynamoDB API 互換のインメモリキャッシュであり、アプリケーションを変更することなく、結果整合性のある読み取りのレイテンシをミリ秒からマイクロ秒に短縮します。DAX はリードスルー/ライトスルーで、プライマリキーによってアイテムをキャッシュします。
DAX と Redis の比較はそれ自体がトレードオフです。DAX は DynamoDB 専用でそのまま使える一方、Redis は多くのデータソースにわたって使える汎用のデータ構造ストアですが、自分で運用するか、マネージドプロバイダーに料金を支払って運用する必要があります。
DynamoDB を扱う
DynamoDB を永続的なストアとして採用したら、DynoTable は macOS、Windows、Linux でテーブルの閲覧、編集、クエリを行うためのネイティブなデスクトップクライアントです。標準の AWS 認証情報チェーンを読み取るため、移行するものは何もありません。リージョンとテーブルを指定するだけで、データは DynamoDB に留まります。SQL Workbench は DynamoDB のアクセスパターンのルールの範囲内でリレーショナル的なクエリを表現し、AI アシスタントはあなた自身の AWS Bedrock 認証情報で動作します。
キャッシュや記録を扱うコードに必要なキー条件、フィルター、更新式を組み立てるには、無料の DynamoDB Expression Builder が、インストール不要で貼り付け可能な SDK、CLI、PartiQL の出力を生成します。DynoTable はクローズドソースの商用アプリです。このページはその機能を説明するものであり、どのように構築されているかを説明するものではありません。
よくある質問
Redis は DynamoDB を置き換えられますか?
通常、記録システムとしては置き換えられません。Redis はインメモリを第一とするため、永続化を有効にして調整しない限り、永続性のあるデータベースではなくキャッシュや一時ストアとして設計されています。DynamoDB はすべての書き込みを複数のアベイラビリティーゾーンにわたって永続化しレプリケートします。多くのチームは両方を使います。永続データには DynamoDB、その前段の高速なインメモリ層には Redis(または DAX)です。
DynamoDB と Redis はどちらが速いですか?
オペレーションごとには Redis のほうが速く、RAM からマイクロ秒でデータを提供します。一方 DynamoDB は永続ストレージから 1桁ミリ秒の読み書きを目指します。DynamoDB でキャッシュ的なレイテンシが必要な場合、DAX は DynamoDB API を離れることなく、結果整合性のある読み取りをマイクロ秒まで引き下げます。
DynamoDB における Redis キャッシュに相当するものは何ですか?
DynamoDB Accelerator(DAX)は、DynamoDB 向けの AWS 組み込みのフルマネージドなインメモリキャッシュです。API 互換なので既存の DynamoDB 呼び出しは変更なしで動作し、リードスルー/ライトスルー層としてプライマリキーによりアイテムをキャッシュします。DAX は DynamoDB 専用であるのに対し、Redis は汎用のデータ構造ストアです。
関連
- DynamoDB を使うべき場合と、DynamoDB TTL が一時的でキャッシュ的なアイテムをどのように期限切れにするかを学びます。
- シングルテーブル設計で永続的なアクセスパターンをモデリングします。
- 無料の DynamoDB Expression Builderで式を組み立てます。
- DynoTable をダウンロードして、DynamoDB テーブルの閲覧、クエリ、編集を行います。
Last verified 2026-07-12 against the official AWS DynamoDB Developer Guide and Redis documentation. Redis is a trademark of its respective owner; referenced here for identification only.