PHPのキャッシュバックエンドとしてRedisを使う
PHPをRedisに接続し、クエリ結果や計算済みデータをキャッシュします
「PHPのキャッシュバックエンドとしてRedisを使う」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
Redisとは何ですか
Redisは、インメモリデータ構造サーバーです。高速性、豊富なデータ型、組み込みのTTLサポートにより、PHPアプリケーションで最もよく使われているキャッシュバックエンドです。
PHP Redis拡張機能のインストール
phpredis C拡張(最速)または純粋なPHP製のpredisライブラリをインストールします。
# Predis via Composer:
$ composer require predis/predis
# Or install phpredis extension:
$ pecl install redisRedisへの接続(Predis)
Predisクライアントを作成し、Redisサーバーに接続します。
<?php
require "vendor/autoload.php";
$redis = new \Predis\Client([
"scheme" => "tcp",
"host" => "127.0.0.1",
"port" => 6379,
]);基本的なキャッシュ操作
キャッシュエントリの設定、取得、削除を行います。
<?php
// Set with TTL (seconds):
$redis->setex("user:42", 300, json_encode($user));
// Get:
$cached = $redis->get("user:42");
$user = $cached ? json_decode($cached, true) : fetchFromDB(42);
// Delete:
$redis->del("user:42");Redisを使ったキャッシュパターン
PHPでキャッシュアサイドパターンを実装します。
<?php
function getUser(int $id): array {
global $redis;
$key = "user:$id";
$cached = $redis->get($key);
if ($cached !== null) return json_decode($cached, true);
$user = fetchUserFromDB($id);
$redis->setex($key, 3600, json_encode($user));
return $user;
}LaravelとRedisの統合
.envで設定し、Cacheファサードを使用します。Predisクライアントを手動で作成する必要はありません。
# .env
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
// Usage:
Cache::put("key", $value, 600);
$value = Cache::get("key");アトミックなインクリメント/デクリメント
カウンター(API使用量やレート制限)には、Redisのアトミック操作を使用します。
<?php
$hits = $redis->incr("page:home:hits");
$redis->expire("page:home:hits", 86400); // reset dailyキューにおけるRedisリスト
Redisリストは、LaravelのRedisキュードライバーのバックエンドです。ジョブはリストに対してアトミックに追加および取り出しされます。
Redis Pub/Sub
Redisは、リアルタイム機能(接続中のWebSocketクライアントへのイベントのブロードキャスト)向けに、パブリッシュ/サブスクライブメッセージングをサポートしています。
Redis Cluster
高可用性と水平スケーリングのために、Redis Clusterは複数のノードにデータを分散します。Laravelは標準でクラスター設定をサポートしています。
Redisの監視
redis-cli monitorを使用するとコマンドをリアルタイムで監視できます。キューを監視する場合はLaravel Horizonを使用します。redis-cli info memoryでメモリ使用量を確認できます。
まとめ
Redisは、PHPで推奨されるキャッシュバックエンドです。高速で、(任意で)永続化でき、豊富なデータ構造を備えています。LaravelではCACHE_DRIVER=redisを設定し、Cacheファサードを使用します。細かな制御が必要な場合は、Predisまたはphpredisを直接使用します。
理解度チェック
有効期限を秒単位で指定してキーを設定するRedisコマンドはどれですか。
よくある質問
「PHPのキャッシュバックエンドとしてRedisを使う」レッスンは無料ですか?
はい。「PHPのキャッシュバックエンドとしてRedisを使う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「PHPのキャッシュバックエンドとしてRedisを使う」で何を学びますか?
PHPをRedisに接続し、クエリ結果や計算済みデータをキャッシュします ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「PHPのキャッシュバックエンドとしてRedisを使う」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- PHPでキャッシュが重要な理由
- PHPのキャッシュバックエンドとしてRedisを使う
- セッションとオブジェクトのキャッシュにMemcachedを使う
- キャッシュ無効化のパターン