Laravelでマスタデータをキャッシュする

2022年10月30日日曜日

Laravel PHP

t f B! P L

スポンサーリンク

Laravelには、任意のデータをキャッシュする機能が標準装備されており、頻繁アクセスするデータをメモリ・ファイル・DBなどにキャッシュできます。

例えば、更新頻度は低いが、参照でのアクセスが頻繁に発生するマスタデータの場合、Cacheにマスタデータを保存しておくことで、都度 DBへアクセスする負荷を減らし、処理速度が向上します。

Cacheから取得・保存する

キャッシュを操作する時は、Cacheファサードを使用します。

次のサンプルコードは、10時間(60 * 60 * 10 秒)の有効期限を設けて、Masterテーブルの内容を全件キャッシュに保存し、関数の戻り値でキャッシュに保存した Masterテーブルの内容を取得する例です。

//キャッシュからマスタデータを取得(なければキャッシュに保存)
$master = Cache::remember("master", 60 * 60 * 10, function () {
    return Master::all();
});

上のコードを補足すると、、、

Cache::remember 関数は、1つ目の引数に指定したキーに既にキャッシュが保存されていれば、キャッシュからデータを取得し、無ければ3つ目の引数に渡した関数の戻り値をキャッシュに保存します。そして、2つ目の引数にはキャッシュの有効期限(単位:秒)を指定でき、有効期限が切れたキャッシュデータは消滅し、再度キャッシュに保存する関数が実行されます。

キャッシュの保存先

キャッシュデータの保存先には、ファイル、データベース、Memcachedなどのキャッシュサーバー、 DynamoDBなどから選べる。デフォルトはファイル保存となっており、framework/cache/dataの下にキャッシュしたデータが保存される。

保存先をデータベースや Memcachedなどに切り替える場合は、 .env ファイルの CACHE_DRIVER を変更する。例えば、キャッシュデータの保存先を Memcachedにする場合は CACHE_DRIVER=memcached に変更し、同ファイルの MEMCACHED_HOSTMEMCACHED_PORT についても環境に合わせて接続先を変更する。

また、キャッシュの細かい設定は config/cache.php で行う。

スポンサーリンク

まとめ

Laravelのキャッシュを使って、マスタデータをキャッシュする方法を紹介しました。

Cache::remember 関数を使用すれば、シンプルにデータのキャッシュ処理が記述できます!

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ