設定

LARAVELは多くのキャッシュシステムに統一したAPIを提供しています。キャッシュの設定はapp/config/cache.phpで設定されています。アプリケーション全体でデフォルトとして使用するキャッシュドライバーをこのファイルの中で指定します。Laravelは最初からMemcachedRedisなど人気のあるキャッシュシステムをサポートしています。

キャッシュ設定ファイルは様々な他のオプションを含んでいます。コメントで説明してありますので、よくお読みください。Laravelのデフォルトでは、fileキャッシュドライバーが設定されています。ファイルシステムにオブジェクトをシリアライズして保存します。大きなアプリケーションでは、MemecachedやAPCのような、メモリに保存するキャッシュを使用することをおすすめします。

キャッシュの使用

キャッシュにアイテムを一つ保存する

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

Carbonオブジェクトを有効日時として設定する

$expiresAt = Carbon::now()->addMinutes(10);

Cache::put('key', 'value', $expiresAt);

存在しない場合、キャッシュにアイテムを一つ保存する

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

addメソッドは本当にキャッシュに追加した場合のみtrueを返します。それ以外の場合はfalseを返します。

キャッシュ中に存在するかチェックする

if (Cache::has('key'))
{
    //
}

キャッシュからアイテム一つを取得する

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

アイテムを一つ取得するかデフォルト値を得る

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

$value = Cache::get('key', function() { return 'default'; });

アイテムを一つ永久に保存する

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

場合により、キャッシュからアイテムを取得するが、それが存在しない場合はデフォルト値を保存したい場合もあるでしょう。それにはCache::rememberメソッドを使用できます。

$value = Cache::remember('users', $minutes, function()
{
    return DB::table('users')->get();
});

更にrememberforeverを一緒に使うこともできます。

$value = Cache::rememberForever('users', function()
{
    return DB::table('users')->get();
});

キャッシュには全アイテムがシリアライズして保存されることに注目してください。ですからどんなタイプのデーターでも自由に保存できます。

キャッシュからアイテムを引き出す

キャッシュからあるアイテムを引き出し、その後削除したい場合は、pullメソッドを使用します。

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

キャッシュから一つのアイテムを消去する

Cache::forget('key');

増減操作

'file'と'database'を除くドライバーでは、incrementdecrement操作がサポートされています。

値を増加させる

Cache::increment('key');

Cache::increment('key', $amount);

値を減少させる

Cache::decrement('key');

Cache::decrement('key', $amount);

キャッシュタグ

注目:キャッシュタグはfiledatabaseキャッシュドライバーにはサポートされていません。さらに"forever"で保存されているキャッシュに多くのタグを使用する場合、古いレコードを自動パージするmemcachedのようなドライバーで最高のパフォーマンスが出せるでしょう。

タグ付けしたキャッシュにアクセスする

キャッシュタグにより、キャシュの中のアイテムをタグに関連付けることができるだけでなく、名前を指定しタグ付けした全キャッシュを消去することもできます。タグ付けしたキャッシュにアクセスするには、tagsメソッドを使用して下さい。

タグ付けしたキャッシュに保存するには、順序に沿って、引数にタグ名のリスト、もしくは配列を渡します。

Cache::tags('people', 'authors')->put('John', $john, $minutes);

Cache::tags(array('people', 'artists'))->put('Anne', $anne, $minutes);

rememberforeverrememberForeverを含め、全キャッシュ保存メソッドとタグを組み合わせて利用できます。また、incrementdecrementのようなその他のキャッシュメソッドも同様に、タグ付けしたキャッシュのアイテムへアクセスできます。

タグ付けしたキャッシュの中のアイテムへアクセスするe

タグ付けしたキャシュへアクセスするには、保存したのと同じ順番でタグのリストを渡してください。

$anne = Cache::tags('people', 'artists')->get('Anne');

$john = Cache::tags(array('people', 'authors'))->get('John');

名前、または名前のリストを指定し、タグ付けしたアイテムを全部消去できます。例えば、次のコードにより、peopleauthors、またはその両方にタグ付けされた全キャッシュ済みアイテムが削除されます。ですから、"Anne"と"John"両アイテムはキャッシュから削除されます。

Cache::tags('people', 'authors')->flush();

その一方、次のコードではauthorsタグ付けされたキャッシュだけが削除されるため、"John"は削除されますが、"Anne"は残ります。

Cache::tags('authors')->flush();

データベースキャッシュ

databaseキャッシュドライバーを使う場合、キャッシュアイテムを保存するテーブルを用意する必要があります。テーブル宣言を行うSchemaの一例です。

Schema::create('cache', function($table)
{
    $table->string('key')->unique();
    $table->text('value');
    $table->integer('expiration');
});