Laravelのキャッシュの使い方

Laravelは値をキャッシュしておくことでより高速にレスポンスできるという機能があります。アクセスの度にSQLフル回転みたいなのはあまりよくないので、更新がない限りキャシュから呼ぶのが適当であったりなど使い方はいろいろです。
キャッシュは新規登録・更新・呼び出し・削除といった感じでいわゆるCRUDです。

キャッシュの種類

  • apc: APC(Alternative PHP Cache)というPHPの中間コードのキャッシュや最適化を行う拡張モジュールを使用します。php.iniでサイズをちょっと大きくしないといけないときもありますので要注意。
  • array: キャッシュをしない場合の指定になります。(配列に格納されるわけじゃないです。)これを指定しておくとキャッシュを用いる実装コードがあってもエラーになりません。一時的にキャッシュを切るときなんかに役に立ちます。
  • file: ファイルに書き込みます。古くてレガシーで遅いですが、どのプラットフォームでも動くはず。(たぶんデフォルト)
  • Database: データのサイズをあまり気にしなくていいのと、サーバーの冗長化の際とかも便利。データの構造が一目瞭然なのがいいです。保存先もDBなのでわかりやすいです。
  • Memcached: 分散メモリ・オブジェクト・キャッシング・システムを用いてキャッシュ。DBも忙しいというときに更にキャッシュで忙しくすると意味ないじゃんということで比較的人気。サイズも結構大きいところまでいける。https://memcached.org/ 元々はDBのキャッシュに使わえれていたぐらいというか(今でもDBのかわりなのか?)なので、いろいろなところで使われています。
  • Redis: メモリの中にデータベース構造みたいなものをもたせているやつです。(こういうのいっぱいありますね)比較的人気&高性能。https://redis.io/

これらどれを使ってもPHP自体のインターフェイスというかコードというかはかわりません。

キャッシュの概要

キャッシュはファサードを利用してすぐに使うことができます。

use Illuminate\Support\Facades\Cache;

キャッシュの使い方(CRUDライク)

値の扱い方もStaticなクラスから取得できます。

登録

$value = "foo";
$minutes = 24;
Cache::put('key', $value, $minutes);

保存する値と共に保存期間を分で設定します。(秒じゃないんだな)

取得

$value = Cache::get('key');

存在確認

Cache::has('key')

true | false で返ります。if文とほとんどセットで使う感じ。

削除

$value = Cache::pull('key');

非存在時保存

値がなかったときのみ保存する。普通の保存の亜流でしょうか。便利は便利。

Cache::add('key', $value, $minutes);

永久に保存

Cache::forever('key', $value);

この場合はpullだと消えないのでforgetを使う。

Cache::forget('key');

全部を削除

Cache::flush();

ここまででだいたいのことはできます。


Laravel 5.6 キャッシュ
Laravelのキャッシュを用いてDB負荷の削減と高速化を行う(入門/導入編)

Last update: 2018.05.25 (金)