2026/04/13
一言で言うと
- Redis:多機能なインメモリデータストア
- Memcached:シンプルなインメモリキャッシュ専用ツール
どちらも「データをメモリ上に保持して高速に読み書きする」という基本的な役割は同じ
できることの幅が大きく異なる
比較
| Redis | Memcached | |
|---|---|---|
| データ構造 | String / Hash / List / Set等 | String のみ |
| 永続化 | ◎(RDB / AOF) | × |
| レプリケーション | ◎(Primary / Replica) | × |
| クラスタリング | ◎(Redis Cluster) | ○(クライアント側で対応) |
| Pub/Sub | ◎ | × |
| トランザクション | ○(MULTI/EXEC) | × |
| マルチスレッド | △(I/O のみ・基本シングルスレッド) | ◎(マルチスレッド) |
| メモリ効率 | ○ | ◎(シンプルな分だけ効率が高い) |
| 学習コスト | 中(多機能な分だけ覚えることが多い) | 低(API がシンプル) |
Memcached が優れている点
① シンプルさ
→ get / set / delete のみのシンプルな API
→ 学習コストがほぼゼロ
② マルチスレッドによる並列処理
→ 複数 CPU コアを活かして並列リクエストを処理できる
→ シングルスレッドより高い並列スループットを出せる場合がある
③ メモリ効率
→ 余分なデータ構造を持たない分・同じメモリ量でより多くのデータを保持できる
Redis が優れている点
① 多彩なデータ構造
→ Sorted Set でリアルタイムランキング
→ List でキュー・スタック
→ Hash でオブジェクト管理
② 永続化
→ 再起動してもデータが消えない
→ セッション・ランキング等の重要データを保持できる
③ レプリケーション・クラスタ
→ Primary / Replica で可用性を確保できる
→ Redis Cluster で水平スケールできる
④ Pub/Sub・Stream
→ リアルタイム通知・メッセージキューとして使える
⑤ 分散ロック・原子的操作
→ SET NX や Lua スクリプトで複数サーバー間のロックを実現できる
使い分け
Memcached を選ぶ場合
- シンプルな KV キャッシュだけが目的
- すでに Memcached を使っていて移行コストをかけたくない
Redis を選ぶ場合
- キャッシュ以外にセッション・ランキング・キューなど複数の用途で使いたい
- データを永続化したい(再起動後も消えてほしくない)
- レプリケーションで可用性を確保したい
- Pub/Sub・分散ロックなど高度な機能が必要
参照
- インメモリデータベースとは?:https://aws.amazon.com/jp/nosql/in-memory/
- Redis OSS と Memcached の比較:https://aws.amazon.com/jp/elasticache/redis-vs-memcached