1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElastiCache for Redis と Memcached の比較とユースケース

Posted at

ElastiCache for Redis と Memcached は、AWS が提供するインメモリデータストアで、それぞれ異なるユースケースに適しています。


ElastiCache for Redis のユースケース

Redis は 永続化Pub/Sub高性能キャッシュ などの機能を持つため、以下のような用途で利用されます。

  1. アプリケーションのキャッシュ

    • データベースの負荷を軽減し、応答速度を向上させるために使用。
    • 例: Rails や Node.js などの Web アプリケーションのセッションデータ、ページキャッシュ。
  2. ランキング & リーダーボード

    • Redis の Sorted Set を利用し、リアルタイムでスコアランキングを管理。
    • 例: ゲームアプリのスコアランキング。
  3. Pub/Sub を使ったリアルタイムメッセージング

    • Redis の Pub/Sub 機能を利用して、リアルタイム通知やチャットシステムを構築。
    • 例: SNS やゲームのイベント通知。
  4. 分散ロック

    • SETNX (SET if Not Exists) を使って分散ロックを実装。
    • 例: 複数サーバー間で同じリソースの同時更新を防ぐ。
  5. キュー (Queue) システム

    • LPUSH & RPOP を使ってキューを実装し、非同期処理を管理。
    • 例: バックグラウンドジョブ (Sidekiq, Resque など)。
  6. セッションストア

    • ショッピングサイトなどで、ログイン情報を Redis に保存。
    • 例: Ruby on Rails + Devise のセッションストア。

Redis の構成図

aws_elasticache_redis.png


ElastiCache for Memcached のユースケース

Memcached は 単純なキャッシュ に特化しており、スケールしやすいのが特徴。

  1. データベースクエリの結果キャッシュ

    • 高頻度でアクセスされるデータをキャッシュし、データベース負荷を軽減。
    • 例: SQL の SELECT 結果を Memcached に保存。
  2. セッションストア

    • アプリケーションのセッションデータを保存し、ステートレスな構成を実現。
    • 例: PHP のセッション管理 (Redis でも可能だが、単純な用途なら Memcached でも OK)。
  3. API レスポンスのキャッシュ

    • 外部 API の結果をキャッシュし、リクエスト負荷を減らす。
    • 例: 天気情報、ニュースフィードのキャッシュ。
  4. オブジェクトキャッシュ

    • アプリケーションの計算コストが高いデータをキャッシュ。
    • 例: 計算済みのランキングデータ、JSON オブジェクト。

Memcached の構成図

aws_elasticache_memcached.png


Redis vs Memcached の選び方

比較項目 Redis Memcached
データ構造 リスト, ハッシュ, セット, ソートセット など シンプルな key-value
ストレージ ディスク永続化 (RDB, AOF) 永続化なし (揮発性)
スケーリング クラスターによるスケールアウト 水平方向にスケール可能
マルチスレッド シングルスレッド (ただし高性能) マルチスレッド
TTL 設定 可能 可能
ユースケース 高度なデータ処理、Pub/Sub、ランキング、ジョブキュー 単純なキャッシュ用途

どのような構成で利用するか?

1. Webアプリのキャッシュ

web_app_cache.png

  • 構成:
    • ElastiCache for Redis (シングルノード or マスター/スレーブ)
    • Rails, Django, Node.js などのフレームワーク + Redis
  • 用途:
    • セッション管理 (redis-session-store)
    • ページキャッシュ
    • API レスポンスのキャッシュ

2. 高トラフィックな API のレスポンスキャッシュ

api_response_cache.png

  • 構成:
    • ElastiCache for Memcached (複数ノードで分散)
    • API サーバー (Lambda, EC2, Fargate)
  • 用途:
    • REST API / GraphQL のレスポンスキャッシュ
    • DB クエリキャッシュ

3. リアルタイムデータ (チャット, ランキング, ジョブキュー)

real_time_data.png

  • 構成:
    • ElastiCache for Redis (クラスターモード)
    • Pub/Sub, Sorted Set, List 機能を利用
  • 用途:
    • ランキングの管理
    • メッセージのリアルタイム通知
    • Sidekiq のジョブキュー管理
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?