最終更新:

【図解で比較】Redis vs Memcached — キャッシュDBの違いを徹底解説


Redis vs Memcached 比較 Redis 豊富なデータ型 String / List / Set / Hash / Stream 永続化 RDB / AOF Pub/Sub メッセージング シングルスレッド イベントループ Lua スクリプト サーバーサイド処理 クラスター / レプリケーション対応 Memcached シンプルなデータ型 String(Key-Value)のみ 永続化なし 再起動で消失 超軽量 低メモリ消費 マルチスレッド マルチコアをフル活用 シンプルなキャッシュに最適
Redis vs Memcached の機能比較
ひよこ ひよこ

そもそも「キャッシュ」ってなに?よく聞くけどイマイチわかってないかも…

ペンギン先生 ペンギン先生

キャッシュは「よく使うデータを高速な場所に一時的に置いておく仕組み」だよ。たとえばレストランで、よく注文されるメニューの材料をキッチンの手前に置いておくイメージ。毎回倉庫まで取りに行くより断然速いよね。データベースへの問い合わせ結果をメモリに保存しておけば、次回は一瞬で返せるんだ

ひよこ ひよこ

なるほど!それで RedisMemcached っていう2つがあるの?どう違うの?

ペンギン先生 ペンギン先生

どちらもインメモリのキャッシュストアだけど、性格がかなり違うんだ。Memcached は「シンプル・高速・軽量」がモットー。文字列のキーと値のペアだけを超高速に扱う、まさにキャッシュ専用マシンだよ。しかもマルチスレッドで動くから、CPUコアが多いサーバーだとそのぶん並列処理できるのが強みだね

ひよこ ひよこ

じゃあ Redis はどういうタイプなの?

ペンギン先生 ペンギン先生

Redis は「多機能・万能ナイフ」タイプだね。文字列だけじゃなくて、リスト、セット、ソート済みセット、ハッシュ、ビットマップなど豊富なデータ型をサポートしているよ。シングルスレッドのイベントループで動くんだけど、I/O多重化のおかげで十分高速。しかも Pub/Sub でメッセージング、Lua スクリプトでサーバーサイド処理、トランザクションまでできるんだ

ひよこ ひよこ

えっ、Redis ってキャッシュ以外にもそんなに色々できるの?でもデータが消えちゃったら困らない?

ペンギン先生 ペンギン先生

いい質問だね!Memcached はメモリ上のデータだけだから、再起動すると全部消える。一方 Redis には永続化の仕組みがあるよ。RDB スナップショットは定期的にディスクに保存する方式で、AOF(Append Only File)は書き込み操作をすべてログに記録する方式。両方を組み合わせることもできるんだ。だから Redisキャッシュだけじゃなく、セッションストアやランキングシステムにも安心して使えるよ

ひよこ ひよこ

AWS とかクラウドで使うときはどうなるの?

ペンギン先生 ペンギン先生

AWS だと Amazon ElastiCache で RedisMemcached の両方が選べるよ。さらに Amazon MemoryDB for Redis という、Redis 互換で耐久性が高いマネージドサービスもあるんだ。レプリケーションやクラスター構成もマネージドで提供されるから、運用の手間がかなり減るね。Redis はクラスターモードでデータを自動分散できるし、リードレプリカで読み取りをスケールアウトすることもできるよ

ひよこ ひよこ

結局どっちを選べばいいの?迷っちゃうな…

ペンギン先生 ペンギン先生

シンプルなキャッシュ用途で、とにかく速さと軽さが欲しいなら Memcachedデータ型を活用したい、永続化が必要、Pub/Sub やランキング機能も欲しいなら Redis、という使い分けが基本だよ。実際のところ、最近は Redis を選ぶケースが圧倒的に多いね

ひよこ ひよこ

Redis がそこまで人気なら、もっとすごい進化もあったりするの?

ペンギン先生 ペンギン先生

実はあるよ!Redis Streams というデータ型を使うと、Apache Kafka のようなメッセージキューイングが Redis 上で実現できるんだ。さらに最近は「Redis を単なるキャッシュではなくプライマリDBとして使う」トレンドも出てきている。あと注目なのが Dragonfly というプロジェクトで、Redis 互換の API を持ちながらマルチスレッドで動作して、ベンチマークでは Redis の数十倍のスループットを出すこともあるんだ

ひよこ ひよこ

マルチスレッドで Redis 互換って、いいとこ取りだね!今後もキャッシュ界隈は進化しそう!

ペンギン先生 ペンギン先生

そうだね。キャッシュ技術は地味に見えるけど、アプリケーションレスポンスタイムに直結する超重要な領域だよ。まずは Redis の基本的なデータ型と永続化の仕組みを押さえておけば、設計の引き出しがかなり増えるはずだよ