plan-4ging

2026/04/13

一言で言うと

  • Redis:多機能なインメモリデータストア
  • Memcached:シンプルなインメモリキャッシュ専用ツール

どちらも「データをメモリ上に保持して高速に読み書きする」という基本的な役割は同じ
できることの幅が大きく異なる

比較

RedisMemcached
データ構造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・分散ロックなど高度な機能が必要

参照