Redisはオープンソース(BSDライセンス)のメモリ内データ構造ストアであり、データベース、キャッシュ、メッセージブローカーとして使用されます。 MySQLなどの他のデータベースと組み合わせて、クエリをキャッシュするメカニズムを提供できます。
この記事では、WordPressページのレンダリングに必要なMySQLクエリをキャッシュする方法を紹介します。これにより、いくつかの注意点はありますが、パフォーマンスが大幅に向上します。
より優れたWordPressキャッシングの概要
WordPressは、MySQLデータベースを使用して、生成にコストがかかる可能性のある内部アプリケーションオブジェクト(パンくずリスト、メニュー項目など)をキャッシュします。データベースはページリクエストのクエリも処理するため、これが最も一般的なボトルネックである可能性があり、多くの場合、読み込み時間が長くなります。
Redisは、MySQLデータベースの代替として機能するキャッシュメカニズムを提供します。ユーザーがWordPressページにアクセスすると、ページの生成に必要なMySQLクエリは、結果をキャッシュするRedisを介して提供されます。これにより、静的ページに匹敵する非常に高速な読み込み時間が実現します。
もう1つの一般的なキャッシュの選択肢は、Memcachedです。ただし、RedisはMemcachedが行うほとんどすべてのことを行うため、このチュートリアルでは、Redis™*用のScaleGridホスティングを使用します。
Redisキャッシングはどのように機能しますか?
ユーザーが初めてWordPressページをリクエストすると、サーバー上でMySQLクエリが実行されます。 Redisはこのクエリをキャッシュするため、別のユーザーが同じWordPressページをリクエストすると、データベースに再度クエリを実行しなくても、結果がRedisから提供されます。
クエリがRedisにキャッシュされていない場合、結果はMySQLによって提供され、Redisキャッシュに追加されます。
データベースで特定の値が更新されると、対応するRedis値が無効になり、不正なキャッシュデータがユーザーに提供されるのを防ぎます。
チュートリアルの要件
この記事で使用されているテクノロジーのリストは次のとおりです:
- 2つのWordPressインストール(ベンチマーク用のプラグインありとなし)
- Redis™サーバー
- RedisWPオブジェクトキャッシュプラグイン
WordPressのインストール
最新バージョンのWordPressをここからダウンロードして、HerokuやAWSなどのホストに2つの異なるインストールをセットアップできます。
Redisサーバー
ScaleGridは、強化されたセキュリティ機能を備えたRedis™スタンドアロンおよびマスター/スレーブクラスターのワールドクラスのサポートを提供します。 ScaleGridでホストされているスタンドアロンRedis™クラスターをAllkeys-LRUキャッシング戦略で使用します。このチュートリアルを支援するために、Redis™のホスティングの30日間の無料トライアルにサインアップできます。
RedisWPオブジェクトキャッシュプラグイン
このプラグインは、WordPressインストールへのドロップインとして使用され、Redis™ホストを使用するように構成できます。プラグインはここにあります。
セットアップ手順:WordPress用のRedisオブジェクトキャッシュ
WordPressインストールにRedisObjectCacheプラグインをインストールする手順は次のとおりです。
ステップ1:Redisキャッシュプラグインをインストールする
このチュートリアルでは、WordPressの新規インストールがすでに2つ設定されていることを前提としています。それらの1つに、RedisObjectCacheプラグインをインストールする必要があります。プラグインがインストールされると、プラグインメニューからアクティブ化できます。
ステップ2:設定でRedisを見つける
プラグインがアクティブ化されると、[設定]メニューの下にRedisオプションが表示されます。
ステップ3:WordPress構成を追加する
プラグインを設定した後、WordPress構成ファイルに構成オプションを追加する必要があります。少なくとも、次のオプションを設定する必要があります。
define('WP_REDIS_HOST', ''); define('WP_REDIS_PASSWORD', '');
上記のオプションは、Redis™のScaleGridクラスターの詳細ページにあります。
構成を保存し、オブジェクトキャッシュを有効にします。認証が正しければ、次の画面が表示されます。
この時点で、RedisはWordPressインストールのキャッシュとして構成されています。
WordPressクエリの監視とデバッグ
すべてのRedisクラスターには、WordPressからの着信クエリリクエストを監視するために使用できるRedisコマンドラインインターフェイス(redis-cli)ツールがインストールされています。これがどのように見えるかのスクリーンショットです:
コンソールに出力が表示されない場合は、WordPressWebサイトにアクセスして更新してください。
追跡するWordPressとRedisの指標
ここで追跡する主な指標は、ページの読み込み時間です。新規インストールに使用しているデフォルトの構成は次のとおりです。
- WordPress:4.9.5
- Redis:v.4.0.2
- WordPressのテーマ:27
上記のパラメータを新たにインストールすると、ページの読み込み時間がほぼ50%短縮されます。
- なし Redisオブジェクトキャッシュ=〜900ms
- あり Redisオブジェクトキャッシュ=〜400ms
Redisオブジェクトキャッシュのデメリット
WordPressでRedisObjectCacheアプローチを使用する際の注意点がいくつかあります。多くのプラグインとテーマがインストールされている場合、キャッシュメカニズムはうまく機能しません。これは、すべてのデータをRedisでキャッシュする必要があるためです。
以前の記事で、Node.js、Redis、Socket.ioを使用してツイートをキャッシュする方法を学ぶこともできます。
いつものように、素晴らしいものを作成する場合は、@scalegridioでツイートしてください。 MongoDB®データベースまたはRedis™の管理またはホスティングについてサポートが必要な場合は、[email protected]までご連絡ください。