Skip to content

🔴 Redis (Object Cache)

概要

Redis (Remote Dictionary Server) は、高速なインメモリデータストアです。キー・バリュー形式(KVS)でデータを保持し、データベースのキャッシュやセッション管理によく使用されます。 Docker Infrastructureのボーナス課題では、WordPressのオブジェクトキャッシュとしてRedisを導入します。

💡 なぜ必要なのか?(導入メリット)

WordPressは動的なCMSであり、ページを表示するたびにMariaDBへ多数のSQLクエリを発行してデータを取得します。 アクセス数が増えるとDBがボトルネックになり、サイトが重くなります。

Redisを導入すると:

  1. DB負荷の軽減: 一度取得したデータ(SQLクエリの結果など)をメモリ上のRedisに保存(キャッシュ)。
  2. 高速化: 2回目以降のアクセスはMariaDBに行かず、超高速なRedisからデータを取得するため、ページ生成時間が短縮される。

⚙️ 仕組みとアーキテクチャ

WordPress用のRedisプラグイン(例: Redis Object Cache)が、PHPとRedisコンテナの間を取り持ちます。

実装のポイント

  • 専用コンテナ: Redis公式イメージを使用し、専用コンテナを立てる。
  • 依存関係: docker-compose.ymlwordpress コンテナが redis コンテナに依存(depends_on)するように設定。
  • 設定: wp-config.php にRedisの接続情報(ホスト名 redis、ポート 6379)を追記する必要がある。
    • WP_REDIS_HOST, WP_REDIS_PORT などを設定。

✅ 動作確認方法 (レビュー用)

レビューで「Redisが本当に動いているか?」を証明する方法です。

  1. コマンドラインでの確認: Redisコンテナに入り、monitor コマンドを実行すると、リアルタイムでキャッシュへのアクセスログが見えます。

    bash
    docker exec -it redis redis-cli monitor

    この状態でブラウザからWordPressをリロードすると、"GET" "wp:options:alloptions" などのログが大量に流れます。これがキャッシュを利用している証拠です。

    実行例: キャッシュヒットとミスの違い

    Cache Miss (初回アクセス時): DBへの問い合わせが発生し、Redisには SET (書き込み) コマンドが流れます。

    text
    "SET" "wp:options:alloptions" "..."
    "SET" "wp:users:1" "..."

    Cache Hit (2回目以降): DBへの問い合わせが減り、Redisから GET (読み取り) コマンドが多く流れます。

    text
    "GET" "wp:options:alloptions"
    "GET" "wp:users:1"
  2. プラグイン設定画面: WordPress管理画面のプラグイン設定ページ(Redis Object Cache)で、「Status: Connected」となっていることを見せます。

🔗 参考リンク

Released under the MIT License.