前書き
Redisは、メモリ内ストアとしてもキャッシュとしても動作可能なオープンソースのキー値ストアです。 Redisは、このチュートリアルで行っているように、データベースサーバーとして単独で使用することも、MySQLなどのリレーショナルデータベースと組み合わせて処理を高速化することもできるデータ構造サーバーです。
このチュートリアルでは、RedisをWordPressのキャッシュとして設定し、WordPressページのレンダリングに使用される冗長で時間のかかるデータベースクエリを軽減します。 その結果、WordPressサイトがより高速になり、データベースリソースの使用量が減り、調整可能な永続キャッシュが提供されます。 このガイドはUbuntu 14.04に適用されます。
すべてのサイトは異なりますが、以下は、このガイドで構成されているRedisを使用した場合と使用しない場合のデフォルトのWordpressインストールホームページのベンチマーク例です。 ブラウザのキャッシュを無効にしてテストするために、Chrome開発者ツールが使用されました。
Redisを使用しないデフォルトのWordPressホームページ:
ページ読み込み時間804ms
Redisを使用したデフォルトのWordPressホームページ:
449msのページ読み込み時間
[.note]#Note: WordPress用のRedisキャッシングのこの実装は、十分にコメントされているがサードパーティのスクリプトに依存しています。 スクリプトはDigitalOceanのアセットサーバーでホストされていますが、外部で開発されました。 WordPress用のRedisキャッシングの独自の実装を作成したい場合は、ここに示されている概念に基づいて、さらにいくつかの作業を行う必要があります。
#
Redis vs. Memcached
Memcachedも一般的なキャッシュの選択肢です。 ただし、この時点で、RedisはMemcachedでできることをすべて実行し、さらに大きな機能セットを使用します。 このStack Overflow pageには、Redisを初めて使用する人の概要または紹介としていくつかの一般的な情報が含まれています。
キャッシングはどのように機能しますか?
WordPressページが初めて読み込まれると、サーバーでデータベースクエリが実行されます。 Redisは、このクエリ、つまりcachesを記憶しています。 そのため、別のユーザーがWordpressページを読み込むと、データベースに照会する必要なく、Redisとメモリから結果が提供されます。
このガイドで使用されるRedis実装は、WordPressの永続オブジェクトキャッシュとして機能します(有効期限なし)。 オブジェクトキャッシュは、WordPressページの読み込みに必要なSQLクエリをメモリにキャッシュすることで機能します。
ページがロードされると、結果のSQLクエリ結果がRedisによってメモリから提供されるため、クエリがデータベースにヒットする必要はありません。 その結果、ページの読み込み時間が大幅に短縮され、サーバーがデータベースリソースに与える影響が少なくなります。 クエリがRedisで利用できない場合、データベースは結果を提供し、Redisはキャッシュに結果を追加します。
データベースで値が更新された場合(たとえば、WordPressで新しい投稿やページが作成された場合)、そのクエリのRedis値は無効になり、不正なキャッシュデータが表示されなくなります。
キャッシュで問題が発生した場合は、Redisコマンドラインからflushall
コマンドを使用してRedisキャッシュを削除できます。
redis-cli
プロンプトが表示されたら、次を入力します。
flushall
追加リファレンス:WordPress Object Cache Documentation
前提条件
このガイドを開始する前に、sudoユーザーを設定し、WordPressをインストールする必要があります。
-
Ubuntu 14.04ドロップレット(1 GB以上を推奨)
-
sudo userを追加します
-
WordPressをインストールします。 このガイドはthese instructionsでテストされていますが、WordPressをインストールする方法はたくさんあります
[[step-1 -—- install-redis]] ==ステップ1—Redisをインストールします
WordPressでRedisを使用するには、redis-server
とphp5-redis
の2つのパッケージをインストールする必要があります。 redis-server
パッケージはRedis自体を提供し、php5-redis
パッケージはWordPressなどのPHPアプリケーションがRedisと通信するためのPHP拡張機能を提供します。
ソフトウェアをインストールします。
sudo apt-get install redis-server php5-redis
[[step-2 -—- configure-redis-as-a-cache]] ==ステップ2—Redisをキャッシュとして構成する
Redisは、キャッシュだけでなくNoSQLデータベースストアとしても動作できます。 このガイドとユースケースでは、Redisはキャッシュとして設定されます。 これを行うには、次の設定が必要です。
ファイル/etc/redis/redis.conf
を編集し、下部に次の行を追加します。
sudo nano /etc/redis/redis.conf
ファイルの最後に次の行を追加します。
maxmemory 256mb
maxmemory-policy allkeys-lru
変更が完了したら、ファイルを保存して閉じます。
[[step-3 -—- obtain-redis-cache-backend-script]] ==ステップ3—Redisキャッシュバックエンドスクリプトを取得する
このWordPress用のPHPスクリプトは、もともとEric Mannによって開発されました。 WordPress用のRedisオブジェクトキャッシュバックエンドです。
object-cache.php
スクリプトをダウンロードします。 このダウンロードはDigitalOceanのアセットサーバーからのものですが、this is a third-party scriptです。 スクリプトのコメントを読んで、どのように機能するかを確認する必要があります。
PHPスクリプトをダウンロードします。
wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php
ファイルをWordPressインストールの/wp-content
ディレクトリに移動します。
sudo mv object-cache.php /var/www/html/wp-content/
WordPressのインストールによって、場所が異なる場合があります。
[[step-4 -—- enable-cache-settings-in-wp-config-php]] ==ステップ4—wp-config.phpでキャッシュ設定を有効にする
次に、wp-config.php
ファイルを編集して、サイトの名前(または任意の文字列)を含むキャッシュキーソルトを追加します。
nano /var/www/html/wp-config.php
* Authentication Unique Keys and Salts.
セクションの最後に次の行を追加します。
define('WP_CACHE_KEY_SALT', 'example.com');
ドメイン名または別の文字列をソルトとして使用できます。
Note:複数のWordPressサイトをホストしているユーザーの場合、各サイトは、独自のキャッシュキーソルトを持っている限り、同じRedisインストールを共有できます。
また、WP_CACHE_KEY_SALT
行の後に次の行を追加して、Redisオブジェクトキャッシュプラグインで永続キャッシュを作成します。
define('WP_CACHE', true);
まとめると、ファイルは次のようになります。
* Authentication Unique Keys and Salts.
. . .
define('NONCE_SALT', 'put your unique phrase here');
define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);
ファイルを保存して閉じます。
[[step-5 -—- restart-redis-and-apache]] ==ステップ5—RedisとApacheを再起動します
最後に、redis-service
とapache2
を再起動します。
Redisを再起動します。
sudo service redis-server restart
Apacheを再起動します。
sudo service apache2 restart
使用している場合は、php5-fpm
を再起動します。これは、DigitalOceanの基本的なインストールの一部ではありません。
sudo service php5-fpm restart
それでおしまい! WordPressサイトはRedisキャッシングを使用しています。 ページの読み込み速度とリソースの使用を確認すると、改善点に気付くはずです。
redis-cliを使用してRedisを監視する
Redisを監視するには、次のようにredis-cli
コマンドを使用します。
redis-cli monitor
このコマンドを実行すると、キャッシュされたクエリを提供するRedisのリアルタイム出力が表示されます。 何も表示されない場合は、ウェブサイトにアクセスしてページをリロードしてください。
以下は、Redisを使用してこのガイドに従って構成されたWordPressサイトからの出力例です。
OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"
CTRL-C
を押して出力を停止します。
これは、Redisが処理しているクエリを正確に確認するのに役立ちます。
結論
このガイドに従って、WordPressはUbuntu 14.04でRedisをキャッシュとして使用するように設定されます。
以下に、WordPressのセキュリティおよび管理に関する追加のガイドをいくつか紹介します。