🔴 Redis (Object Cache)
概要
Redis (Remote Dictionary Server) は、高速なインメモリデータストアです。キー・バリュー形式(KVS)でデータを保持し、データベースのキャッシュやセッション管理によく使用されます。 Docker Infrastructureのボーナス課題では、WordPressのオブジェクトキャッシュとしてRedisを導入します。
💡 なぜ必要なのか?(導入メリット)
WordPressは動的なCMSであり、ページを表示するたびにMariaDBへ多数のSQLクエリを発行してデータを取得します。 アクセス数が増えるとDBがボトルネックになり、サイトが重くなります。
Redisを導入すると:
- DB負荷の軽減: 一度取得したデータ(SQLクエリの結果など)をメモリ上のRedisに保存(キャッシュ)。
- 高速化: 2回目以降のアクセスはMariaDBに行かず、超高速なRedisからデータを取得するため、ページ生成時間が短縮される。
⚙️ 仕組みとアーキテクチャ
WordPress用のRedisプラグイン(例: Redis Object Cache)が、PHPとRedisコンテナの間を取り持ちます。
実装のポイント
- 専用コンテナ: Redis公式イメージを使用し、専用コンテナを立てる。
- 依存関係:
docker-compose.ymlでwordpressコンテナがredisコンテナに依存(depends_on)するように設定。 - 設定:
wp-config.phpにRedisの接続情報(ホスト名redis、ポート6379)を追記する必要がある。WP_REDIS_HOST,WP_REDIS_PORTなどを設定。
✅ 動作確認方法 (レビュー用)
レビューで「Redisが本当に動いているか?」を証明する方法です。
コマンドラインでの確認: Redisコンテナに入り、
monitorコマンドを実行すると、リアルタイムでキャッシュへのアクセスログが見えます。bashdocker 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"プラグイン設定画面: WordPress管理画面のプラグイン設定ページ(Redis Object Cache)で、「Status: Connected」となっていることを見せます。