2026年10月8日
2026年10月8日
WordPressでオブジェクトキャッシュ(Redis/Memcached)を設定する方法
WordPressのオブジェクトキャッシュを永続化するには、サーバーにRedisまたはMemcachedを用意し、wp-content/object-cache.php(ドロップイン)を置いてWordPressから使えるようにします。この記事では、オブジェクトキャッシュが何を速くするのか、RedisとMemcachedの選び方、サーバー側の準備、プラグインでの有効化、動作確認とトラブル時の戻し方までを順に説明します。
サーバー設定を変える作業なので、始める前にサイトとデータベースのバックアップを取り、可能ならステージング環境で試してください。パッケージ名やプラグインの画面表記はOSやバージョンで変わるため、コマンドは例として自分の環境に合わせて読み替えてください(2026年10月現在)。
オブジェクトキャッシュで何が速くなるか
WordPressには WP_Object_Cache という仕組みがあり、wp_cache_get() や wp_cache_set() を通じて、データベースから取り出した投稿・オプション・ユーザー情報などをメモリに保存します。ただし標準ではこのキャッシュは1回のリクエストの間しか残りません。次のページ表示では、また同じクエリをデータベースに投げます。
RedisやMemcachedを使うと、このキャッシュをリクエストをまたいで保持できます(永続オブジェクトキャッシュ)。効果が出やすいのは次のような場面です。
- ログイン中のユーザーが多い会員サイトや、WooCommerceのカート・マイページなど、ページキャッシュが使えないページ
- 管理画面の操作が重いサイト
- オプションやメタデータの読み込みが多く、データベースの負荷が高いサイト
一方、ページキャッシュ(HTMLそのものを保存する仕組み)が効いているページでは、そもそもPHPがほとんど動かないため、オブジェクトキャッシュの効果は小さくなります。両者は役割が違う別の仕組みです。サイトヘルスに「永続オブジェクトキャッシュを使用してください」という推奨が出ることがありますが、これはサイトの規模などから判断された提案であり、出ていないサイトで導入してはいけないという意味ではありません。
表示が速くなることは訪問者の体験には役立ちますが、検索順位を直接押し上げるものではない点も押さえておいてください。
RedisとMemcachedのどちらを選ぶか
どちらもメモリ上のキー・バリュー型のストアで、WordPressのオブジェクトキャッシュとしてはどちらでも使えます。選ぶときの目安は次のとおりです。
- Redis:WordPress向けのプラグインやドキュメントが多く、データの種類や永続化の設定も豊富です。迷ったらこちらが扱いやすいでしょう。なお、Redisはライセンスの変更を経ており、互換のValkeyを提供するホスティングやディストリビューションもあります。
- Memcached:仕組みが単純で、純粋なキャッシュとしては十分に高速です。すでにサーバーで使っている場合や、利用中のキャッシュプラグインがMemcachedに対応している場合に選ぶ価値があります。
レンタルサーバーやマネージドWordPressでは、管理画面からオブジェクトキャッシュを有効にできたり、ホスティング会社が独自のドロップインを提供していたりします。その場合は自分でサーバーに入れるより、提供されている方法を優先してください。
サーバー側の準備(Ubuntuの例)
VPSなどで自分でインストールする場合の例です。PHPの拡張モジュールのパッケージ名は、PHPのバージョンや追加しているリポジトリによって php8.3-redis のように変わります。
# Redis を使う場合
sudo apt update
sudo apt install redis-server php-redis
# Memcached を使う場合
sudo apt install memcached php-memcached
インストールしたら、外部から接続できない状態になっているかを確認します。キャッシュサーバーがインターネットに公開されていると、データの読み取りや悪用につながります。
- Redisは設定ファイル(多くの場合
/etc/redis/redis.conf)でbind 127.0.0.1 ::1のように待ち受けをローカルに限定し、requirepassまたはACLでパスワードを設定します。使うメモリの上限をmaxmemoryで決め、上限に達したときの動作をmaxmemory-policy allkeys-lruのように指定しておくと、メモリを使い切って止まる事態を避けられます。 - Memcachedは設定ファイル(多くの場合
/etc/memcached.conf)で-l 127.0.0.1を指定し、ローカルだけで待ち受けるようにします。メモリ量は-mで指定します。
設定を変えたらサービスとPHP-FPMを再起動し、接続を確かめます。
sudo systemctl restart redis-server
sudo systemctl restart php8.3-fpm
redis-cli -a 'your-redis-password' ping
php -m | grep -i -E 'redis|memcached'
redis-cli が PONG を返し、php -m の結果に拡張モジュール名が出れば準備は完了です。PHP-FPMのサービス名はバージョンによって違うので、systemctl list-units | grep fpm で確認してください。
WordPressで有効にする(Redisの場合)
Redisでは、公式ディレクトリで公開されている「Redis Object Cache」プラグインがよく使われています。接続先は wp-config.php に定数で書きます。/* That's all, stop editing! */ の行より上に追加してください。
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'your-redis-password' );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_CACHE_KEY_SALT', 'example.com:' );
WP_CACHE_KEY_SALT はキャッシュのキーに付ける接頭辞です。同じRedisを複数のサイトで共有する場合、これを分けないとサイト間でキャッシュが混ざります。サイトごとに別の値にするか、WP_REDIS_DATABASE で番号を分けてください。パスワードはwp-config.phpに書くことになるので、wp-config.phpのパーミッションを絞り、Gitなどのリポジトリに含めないようにします。
プラグインを有効化したら、プラグインの設定画面からオブジェクトキャッシュを有効にするか、WP-CLIで次のように実行します。これで wp-content/object-cache.php が配置されます。
wp plugin install redis-cache --activate
wp redis enable
wp redis status
wp redis status で接続状態が正常と表示されれば有効になっています。
WordPressで有効にする(Memcachedの場合)
Memcachedは、WordPress用のドロップインを単独で配布しているプラグインの中に更新が止まっているものもあるため、導入前に最終更新日と対応バージョンを確認してください。現実的には、LiteSpeed CacheやW3 Total Cacheのように、オブジェクトキャッシュの接続先としてMemcached(およびRedis)を選べるキャッシュプラグインを使う方法が扱いやすいです。各プラグインの設定画面でオブジェクトキャッシュを有効にし、接続先に 127.0.0.1 とポート 11211 を指定します。項目名はプラグインやバージョンで異なるので、各プラグインのドキュメントを参照してください。
動作を確認する
有効にしたあとは、本当にキャッシュが使われているかを確かめます。
- Query Monitor:開発者向けの定番プラグインで、ページごとのデータベースクエリ数や、オブジェクトキャッシュのヒット率を確認できます。導入前後でクエリ数が減っていれば効果が出ています。
- Redis側の確認:
redis-cli -a 'your-redis-password' info statsで表示されるkeyspace_hitsとkeyspace_missesの増え方を見ると、ヒットしているかが分かります。 - サイトヘルス:「ツール」→「サイトヘルス」で、永続オブジェクトキャッシュに関する推奨が消えているかを確認します。
よくあるつまずきと戻し方
データベースを直接変更したのに表示が変わらないphpMyAdminやSQLで値を書き換えると、キャッシュに古い値が残ります。wp cache flush を実行するか、プラグインの画面からキャッシュを消去してください。
他のキャッシュプラグインと競合するobject-cache.php は1つしか置けません。別のキャッシュプラグインがすでにドロップインを配置していると、上書きや有効化の失敗が起こります。オブジェクトキャッシュを担当するプラグインを1つに決め、他方のオブジェクトキャッシュ機能は無効にします。
キャッシュサーバーが止まってサイトが表示されない管理画面に入れなくなった場合は、FTPやSSHで wp-content/object-cache.php の名前を変えるか削除します。ドロップインが無くなれば、WordPressは標準の(永続化しない)オブジェクトキャッシュに戻るので、サイトは表示されるようになります。原因を直してから、もう一度有効化してください。
メモリ不足でキーが消える上限が小さすぎると、キャッシュがすぐに追い出されてヒット率が上がりません。Redisなら info memory で使用量を見て、maxmemory を調整します。サーバー全体のメモリとのバランスも考えてください。
まとめ
- 標準のオブジェクトキャッシュは1リクエスト限りで、RedisやMemcachedと
object-cache.phpで永続化します。 - 効果が大きいのはログイン中のページやWooCommerceなど、ページキャッシュが効かない場面です。
- キャッシュサーバーはローカルだけで待ち受け、パスワードとメモリ上限を設定します。
- Redisは「Redis Object Cache」プラグインと wp-config.php の定数で設定し、複数サイトで共有するならキーの接頭辞を分けます。
- 不具合時は
wp cache flush、復旧できないときはobject-cache.phpを外せば標準の動作に戻ります。