Redisは、リアルタイムアプリケーション向けに開発されたスキーマレスなインメモリキーバリューストア(KVS)です。NoSQLデータベース、セカンダリデータレイヤー、または計算集約的なプロセスのキャッシュレイヤーとして使用することができます。
ウェブサイトのセッション状態やその他のデータをキャッシュできる永続ストレージを提供し、Redisをキャッシュレイヤーとして使用するアプリでは、複雑なデータベースクエリまたはAPIの呼び出しを一度行い、その結果をキャッシュします。Redisではオブジェクトを素早く効率的に保存し、取り出すことができるため、より伝統的なリレーショナルデータベースサーバーを主要なコンテンツストアとして使用するWordPressと相性抜群です。
Redisコマンドラインインターフェース(CLI)は、WordPressサイトのRedisサーバーとの通信に便利です。Redis CLI(redis-cli
としてコマンドラインで呼び出される)を使って、Redisサーバーからプログラムで応答を要求・受信したり、Redisインスタンスで実行されたコマンドを監視したり、インスタンスの待ち時間を調べたり、サーバーの状態をリアルタイムで監視したりすることができます。
今回は、RedisとWordPressサイトを統合し、Redis CLIを使ってターミナルから作成、読み取り、更新、削除(CRUD)操作を実行する方法を学びましょう。
DevKinstaでWordPressとRedisを連携する
まずは、WordPressサイトを素早く開発・デプロイできる無料のローカル開発ツール「DevKinsta」を使用し、WordPressサイトとRedisデータベースを接続します。
DevKinstaを使うことで、Nginx、PHP、MySQL互換のMariaDBデータベースを含む、最新の依存関係でDocker化したWordPressサイトをローカル環境にて構築することができます。WordPress CLIにも対応しています。
Windows、Linux、macOSに対応しており、DevKinstaダウンロード時に関連情報を確認可能です。
インストールを終えたら、デフォルトのホスティングスタックを使って、デバイス上にローカルWordPressサイトを作成していきます。
「新規WordPressサイト」「Kinstaからインポート」(MyKinstaからサイトをローカル環境に複製)「カスタムサイト」の3種類から選ぶことができます。
今回は例として1つ目の方法を使って、Nginx、PHP、MariaDB、WordPressの最新バージョンを使用した新規WordPressサイトを作成していきます。
サイトを作成すると、以下のようなダッシュボードが表示されます。

「パス」は、ローカルサイトのファイルとフォルダを含むディレクトリです。右上に表示される「WP管理画面」をクリックすると、WordPressサイトの管理画面に移動できます。「サイトのホスト」のURLは、先ほど作成した新規サイトに紐付いています。
Docker Desktopを開いて「Containers」をクリックをすると、DevKinstaプロジェクトの依存関係として実行されているすべてのコンテナが表示されます。

これでWordPressサイトとコンテナの依存関係が稼働し、Redisデータベースをサイトに連携する準備が整いました。続いては、以下の手順に従ってください。
- DevKinstaの「WP管理画面」をクリックして、WordPressの管理画面に移動
- 左側メニューで「プラグイン」を選択
- 「新規追加」をクリックして「Redis Object Cache」を検索

プラグインを見つけたら、「今すぐインストール」をクリックします。その後、左側メニューの「インストール済みプラグイン」を選択し、プラグインが有効になっていることを確認します。

Redis Object Cacheを初めて有効化する際は、Redisデータベースに接続できない旨を伝える通知が表示されます。これは、DockerでRedisインスタンスを持つコンテナを作成することで解決可能です。
ターミナルを開いて、Redisイメージを実行する「redisnet」というネットワークコンテナを作成します。
docker network create -d bridge redisnet
次にネットワークコンテナ内で、Redisイメージをスタンドアロンコンテナとしてビルド、実行します。
docker run -d -p 6379:6379 --name demo_redis --network redisnet redis
コンテナイメージを起動したら、Docker DesktopでRedisイメージが稼働していることを確認します。

WordPressサイトは、Dockerコンテナ内で自動的に起動されます。以下のコマンドで、コンテナのネットワーク名とIDを確認しましょう。
docker network ls

上のスクリーンショットの例では、devkinsta_networkのネットワークID(切り捨ての適用されたもの)は、d1fa155f7a4d
です。このIDは後ほど使用します。
RedisクラスタとサーバーをローカルWordPressサイトに連携する方法の1つとして、RedisとDevKinstaのネットワークを直接接続することができます。まずは、RedisのコンテナIDを確認します。コンテナを一覧表示するDockerコマンドで-l
を使って、最近作成したコンテナだけを表示することができます。
docker ps -l

上のスクリーンショットの例では、コンテナIDはc3ffc630e44c
です。
以下のコマンドで、RedisコンテナをDevKinstaのネットワークに接続します。コンテナIDは置き換えてください。
docker network connect devkinsta_network c3ffc630e44c
Redisコンテナイメージがdevkinsta_network内の実行中のコンテナリストに追加されます。RedisコンテナのネットワークIPアドレスを確認するには、以下のコマンドを実行してください。devkinsta_networkのIDは、network ls
コマンドを使って出力したものに置き換えます。
docker inspect d1fa155f7a4d

上のスクリーンショットの例では、demo_redisコンテナのIPアドレスは「172.172.0.6」です。接続を続行する前に、プロジェクトのIPアドレスをどこかにメモしておいてください。
ローカルマシンのWordPressサイトのルートに移動して、DevKinstaに表示されているサイトパスにアクセスします。テキストエディターでwp-config.phpファイルを開き、カスタム構成変数のセクションに以下のコードを貼り付けてください。
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_HOST', '172.172.0.6');
define('WP_REDIS_PORT', '6379');
WP_REDIS_HOST
に使用するIPアドレスは、docker inspect
コマンドを実行してdemo_redis用に出力したものを使用します。
この設定コードによって、プラグインがDevKinstaと同じDockerコンテナとネットワーク内でRedisサーバーにアクセスするためのRedisクライアント、ホスト、ポートが追加されます。
プラグインが接続、実行されていることを確認するには、以下の手順に従ってください。
- WordPress管理画面の「プラグイン」ページに移動
- Redis Object Cacheの「Settings」をクリック
- 「Enable Object Cache」(オブジェクトキャッシュを有効化)をクリック

Redis Object Cacheが有効になると、設定ページが以下のように変化します。

Redis CLIを起動する
Redis CLIツール(redis-cli
)にはRedisサーバーが付属しており、RedisサーバーはWindows、macOS、Linuxに対応しています。
今回の例では、すでにDockerでRedisを実行しているため、demo_redisコンテナ内で起動します。
docker ps
コマンドを使用すると、Redisイメージを実行しているコンテナのIDを表示することができたのは先に触れた通りです。先ほどの例では、c3ffc630e44c
でした。この切り捨てられたIDを使用し、demo_redisを対象に、その中でコマンドラインシェルを起動します。
docker exec -it c3ffc630e44c /bin/sh
これで、redis-cli
ツールが起動します。

サーバーにpingを打って、接続をテストしましょう。
ping

IPアドレスとポートでRedisサーバーに接続し、テストを行うには、以下のコマンドを実行してください(demo_redisコンテナのIPアドレスを使用)。
redis-cli -h 172.172.0.6 -p 6379 ping

これで、ローカルマシンとDockerコンテナの両方をRedisサーバーに接続することができました。
次に、redis-cli
とkeys *
コマンドを使用してデータベース内のすべてのキーを表示し、WordPressサイトがRedisキャッシュにデータを保存していることを確認します。

すると、上のようにWordPressのデータがすでにRedisキャッシュに保存されていることがわかります。
Redis CLIのCRUD操作
CLIツールを使って、RedisデータベースのCRUD操作を実行することもできます。
先ほど挙げたRedis CLIのkeys *
リクエストから、コピーしたキーの値を取得してみます。
get :u.:~8r]mC->Re/gG!&mGU.[{+;]t7o<H~)c*pcU=Lx_Vs{9JkdxkL:X;M-@Y$Svwp:user_meta:1

次に、Redisデータベースの内容を操作してみましょう。redis-cli
を起動して、set
、get
、del
コマンドでキーと値のペアを作成。新規キーを照会し、それを削除します。

上のように削除されたキーの値を取得しようとすると、nil
が返されます。
他にも、Redis CLIを使用したより高度な操作は多数あります。
まとめ
Redis CLIは、Redisコマンドを本番環境にプッシュする前にサイト上でテストを行うのに有用です。また、Redisインスタンスのアクティビティを監視することも可能です。
Dockerでは、Redisインスタンスにを介して、単一のコンテナでデータベースを管理するのに必要な機能(redis-cli
を含む)を利用することができます。
一方、DevKinstaの”Docker化”プロセスを活用すれば、ローカルマシンでWordPressサイトを開発し、数回のクリックで本番環境にデプロイすることができます。
118,000件のWordPressサイトを支えるKinstaのクラウドサーバーを利用したことはありますか?高度なサイト管理ツールを搭載した優れたサーバーサービスをお探しなら、KinstaのWordPress専用マネージドクラウドサーバーをお試しください。