LaravelのCache(キャッシュ)の使い方

Laravel Laravel

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();
});

コメント

タイトルとURLをコピーしました