ElastiCacheの2つのエンジン ~RedisとMemcachedについて考える~
最終更新日:2026年8月12日
はじめに
| 項目 | AWS | Microsoft Azure | Google Cloud |
|---|---|---|---|
| 世界シェア | 約33%(首位) | 約22% | 約11% |
| 強み | サービス数・実績 | Microsoft製品連携 | データ分析・AI |
| 無料枠 | 12ヶ月+常時無料 | 12ヶ月無料 | 常時無料枠あり |
| 主な資格 | CLF / SAA / SAP | AZ-900 / AZ-104 | ACE / PCA |
システム高速化の手法をいくつか調べていくと、インメモリキャッシュ、インメモリデータストアという手法に行き着くかもしれません。
一般的なRDBは、HDDやSSDを使ってデータを読み書きするので、データ量に応じてシークタイムの遅延が発生します。そこでもし、メモリ上でデータの読み書きが出来れば、速度は格段に向上する筈です。
Amazon.comが提供する、クラウドプラットフォームAWS(Amazon Web Service)において、このインメモリキャッシュのサービスに相当するのが、ElastiCacheです。
AWS公式サイトでは、ElastiCacheについて、ミリ秒未満の応答速度を実現させるような要求の厳しいアプリケーション向けという記載があります。
したがって、ElastiCacheについて興味を持つ方は限定されるかもしれません。しかし、ElastiCacheがどのような仕組みで成り立っているのか、知っておいても損は無いはずです。
AWSユーザーは、ElastiCache作成時に、RedisもしくはMemcachedのいずれかのエンジンを選択する事になります。
どちらもインメモリデータストアですが、 Redis はキー・バリュー型NoSQLデータベースなのに対し、MemCachedは分散型インメモリキャッシュです。
上記2つのエンジンについて、それぞれの違いを理解した上で、システムの役割や規模に合わせて選択したほうがよいでしょう。
そこで、ElastiCache利用の為に、まずRedisとMemcachedについて理解を深めて行きたいと思います。
【要注意】Redisのライセンス変更とValkeyの登場
2024年、Redis社(旧Redis Labs)がRedisのライセンスをオープンソースではないライセンスに変更したことをきっかけに、Linux Foundation傘下でRedis互換のオープンソースフォーク「Valkey」が誕生しました。これを受けAWSのElastiCacheは、従来のRedis OSSエンジンに加えて「Amazon ElastiCache for Valkey」を新たに提供しています。本記事の内容自体(データ型や設計思想)はRedisと基本的に共通しますが、これから新規に構築する場合はValkeyも選択肢に入る点にご留意ください。最新の対応状況・料金体系はAWS公式サイトでご確認ください。
Redisとは
Redisの多様なデータ型
Redisは、キーとバリューを紐付けて管理するNoSQLデータベースです。様々なデータ型を用いて、キーとバリューを保持する為、複雑なデータ管理が可能となります。以下、Redisで利用できるデータ型の一部を列挙します。
- Strings
- Lists
- Sets
- Sorted Sets
- Hashes
Strings
文字列をキーとバリューの1対1で保持するシンプルなデータ型です。バイナリセーフである為、画像をバイナリに変換して保存するといった事も出来ます。セッション管理等でもよく用いられます。
値の登録はSETコマンド、取得はGETコマンドで行います。
Lists
キー1つに対し、複数のバリューを紐付けます。Listsは順番を保持しており、重複が許されます。
要素をListの左側(先頭)に追加する場合はLPUSH、右側(末尾)に追加する場合はRPUSHコマンド、値の取得はLRANGEコマンドで行います。
SNSのタイムラインなど日付・時間を管理する場合などによく用いられます。
Sets
重複無しで順序を持たない文字列集合です。値の返却時に順序は保証されません。別のキーで登録されたSetとの和集合や差集合などを求める事が出来ます。
要素の追加はSADD、取得はSMEMBERSコマンドで行います。
SortedSets
キーに紐付いた各値にスコアを定めて、そのスコア値の大小で順序を定めるSetです。
要素の追加はZADD、取得はZRANGEコマンドで行います。
Hashes
重複・順序無しで1つにキーに対し、フィールドと値のペアを紐付ける型です。
1つのHashに登録できるフィールドはメモリ容量の範囲で無制限となります。
要素の追加はHSET、取得はHGETコマンドで行います。
レプリケーションとデータ永続性
Redisはマスターと複数のスレーブで構成する事で、負荷を分散をする事が可能です。また、メモリ上のデータをディスクに保存する事で、停電等の電源消失時にデータを失わずに保存することが出来ます。
Memcachedとは
シンプルなデータ構造
memory cache daemon の略でメムキャッシュディーと読みます。キーとバリューをシンプルな1対1で組み合わせて保存するキーバリューストアです。
RDBとの連携
頻繁に行われるデータベースへの問い合わせ結果を一時的にサーバーのメモリ上にキャッシュしておく事で素早い応答を実現し、データベースの負荷を軽減させる事ができます。
データの保存
データを保存する容量を超えた場合、古い順(LRU)から削除して登録していく仕組みです。また、メモリ上にデータを保存する仕組み上、電源断によってデータは消失します。
スケーラビリティ
複数のサーバーを並列に動作させて、各サーバーにキャッシュを分散したり、負荷に応じてスケールアウト/スケールインに対応しますが、クライアント側で制御する必要があります。
Redis と Memcached どちらを選ぶか?
上記で述べたように、シンプルなデータ構造で、負荷に応じてスケールアウト/スケールインに対応させたいなら、Memcachedを選択する事になるでしょう。
また、複雑なデータ構造と電源消失にも対応させたり、単体のキーバリューストアとしても動作させたいなら、Redisを選択する事になるでしょう。
押さえておきたいポイント
- Memcachedはシンプルなキーバリューストアで、マルチスレッドによる水平スケールに強く、キャッシュ用途に特化している。
- Redisは複数のデータ型・永続化・レプリケーションに対応しており、キャッシュ以外にもセッションストアやランキング処理など幅広い用途に使える。
- Redisのライセンス変更に伴い、AWSではRedis互換のオープンソースエンジン「Valkey」も選択できるようになっている。新規構築時は両エンジンを比較検討するとよい。
よくある質問
Q. ElastiCacheのRedisとMemcached、料金に違いはありますか?
ノードタイプ・リージョンによって課金体系は同じ枠組みで提供されていますが、エンジンによって使えるノードタイプや機能(クラスターモード、レプリケーション等)に違いがあるため、実際の費用は構成によって変わります。具体的な料金は変動するため、最新料金はAWS公式サイトでご確認ください。
Q. データの永続性を重視する場合はどちらを選ぶべきですか?
Memcachedはメモリ上のみでデータを保持するため、電源断やノード障害でデータが消失します。ディスクへの永続化やレプリケーションによる冗長化が必要な場合は、Redis(またはValkey)を選択することをおすすめします。
Q. RedisとMemcachedは途中でエンジンを切り替えられますか?
ElastiCacheではエンジンごとにクラスターの作り直しが必要になるのが基本的な考え方です。データ型や永続化要件などエンジン選択の前提が異なるため、構築前に用途を整理してから選定することをおすすめします。
まとめ
今回はElastiCacheで利用可能なエンジンの特徴と違いについて考えてみました。
もし、ElastiCache作成時に迷ってしまう場合は、機能が豊富なRedis(またはValkey)を選択するほうが、よいかもしれません。
最後までご覧頂き、ありがとうございました。
▼ アクロビジョンについて


