スポンサーリンク
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_HOST
、MEMCACHED_PORT
についても環境に合わせて接続先を変更する。
また、キャッシュの細かい設定は config/cache.php
で行う。
スポンサーリンク
まとめ
Laravelのキャッシュを使って、マスタデータをキャッシュする方法を紹介しました。
Cache::remember
関数を使用すれば、シンプルにデータのキャッシュ処理が記述できます!
0 件のコメント:
コメントを投稿