LaravelのCacheについての説明と使い方をまとめてみました。
よく使いそうなものだけまとめています。Laravelのバージョンは8で確認しています。
公式の説明リンクはこちらです。(詳細はこちらで確認してみてください)
LaravelのCache機能について
Laravelでは、よく使うようなデータを保持するキャッシュ機能があります。
使われる用途としては、取得に時間のかかるような重たい処理をしたときに、取得したデータをキャッシュしておきます。
同じデータにアクセスした場合にキャッシュから読み込むことによって、レスポンスを早く返すことができます。
デフォルトではfileにキャッシュされますが、LaravelではMemcached・Redis・DynamoDBなどもサポートしています。
Cacheの設定
Cacheの設定場所はconfig/cache.php
ファイルに書いています。
デフォルトで使うキャッシュの機能設定や各キャッシュ方式の詳細設定をすることができます。
Laravelの初期状態ではデフォルトのキャッシュ方式はfileになっています。
Cacheを操作する方法
Cacheを操作する方法として、Cacheファサードを使う方法とCacheヘルパーを使う方法があります。
Cacheファサードを使う
Cacheファサードを使用してCacheを操作する場合は、use文で下記の名前空間を使うようにします。
use Illuminate\Support\Facades\Cache
保存データを呼び出す場合は、このようにします。
$result = Cache::get("key");
Cacheヘルパーを使う
Cacheヘルパーを使用する場合は、グローバルなcache関数を呼び出して使用します。
bladeビューからも手軽に呼び出すことが可能です。
保存したデータをキーで指定して呼び出す例です。
$result = cache("key");
bladeビューの場合も同様に下記のように使用できます。
{{ cache("key") }}
引数なしで呼び出すと、Illuminate\Cache\CacheManager
のインスタンスが返ってくるようです。
ファサードを使うときと同じメソッドが使用できます。
cache()->get("key");
Cacheにデータを保存する
Cacheにデータを保存する方法について書いています。
存在しない場合のみ追加されるadd
と上書きされるput
があります。
Cacheデータを新規追加または上書きする(put)
put
メソッドを使うと、キャッシュが存在しない場合は追加、ある場合は上書きしてくれます。
保存できた場合はtrue
が返ってきて、失敗した時にはfalse
が返ってきます。
Cache::put($key, $value);
キャッシュに期限をつける場合は、下記のように第3引数に秒で保存時間を渡します。
// 60秒間保持
Cache::put($key, $value, 60);
ヘルパーを使って、putで保存する場合は下記のようにします。
cache([$key => $value]);
Cacheデータが存在しない場合に追加する(add)
add
メソッドを使うと、キャッシュが存在しない場合のみ追加してくれます。
保存できた場合はtrue
が返ってきて、存在する場合はfalse
が返ってきます。
Cache::add($key, $value);
キャッシュに期限をつける場合は、putと同じく第3引数に秒で保存時間を渡します。
// 60秒間保持
Cache::add($key, $value, 60);
保存できているかで分岐する場合は、下記のようになります。
$result = Cache::add($key, $value);
if ($result) {
echo "add save success!!";
} else {
echo "add save failed...";
}
ヘルパーを使って、addする場合は下記のようになります。
cache()->add('key', 'value');
Cacheからデータを取得する
データを取得する場合は、get
メソッドを使います。
キーを引数として渡すと、キャッシュに保存している値が返ってきます。
Cache::get("key");
ヘルパーを使ってデータを取得する場合は、下記のようにcacheヘルパーに引数を渡して呼び出します。
cache("key");
Cacheのデータを削除する
データを削除する場合は、forget
メソッドを使います。
キーを引数として渡すと、キーで保存されたデータが削除されます。
Cache::forget('key');
ヘルパーを使う場合は、下記のようになります。
cache()->forget('key')
全てのキャッシュデータ削除
下記で、全てのキャッシュを削除します。
Cache::flush()
ヘルパーを使う場合は、下記のようになります。
cache()->flush()
Cacheが存在すれば取得して、無ければ作る!
remember
メソッドを使用すると、キャッシュが存在すればキャッシュから取得して、無ければ作ってキャッシュすることができます。
例えば、このように書くと
$result = Cache::remember('users', 60, function () {
return User::all();
});
users
というキーで60秒間キャッシュされます。
第1引数がキーで、第2引数がキャッシュする秒数、第3引数にキャッシュする内容を書きます。
今回、キャッシュされるデータは第3引数のクロージャで返している内容になります。(ここではユーザーテーブルの全てのデータ)
キャッシュか新規で作成して、取得した値は$result
に返ってきます。
60秒過ぎるまでは、キャッシュから取得されて、過ぎるとクロージャが動いて再キャッシュするイメージです。
あまり更新されないマスターデータなどで使うと良さそうですね。
無期限でキャッシュする
rememberForever
メソッドを使用すると、無期限にキャッシュされます。
remember
メソッドの秒数がなくなったイメージです。第2引数にキャッシュする内容を書きます。
$result = Cache::rememberForever('users', function () {
return User::all();
});
コメント