設定
LARAVELは多くのキャッシュシステムに統一したAPIを提供しています。キャッシュの設定はapp/config/cache.php
で設定されています。アプリケーション全体でデフォルトとして使用するキャッシュドライバーをこのファイルの中で指定します。Laravelは最初からMemcachedやRedisなど人気のあるキャッシュシステムをサポートしています。
キャッシュ設定ファイルは様々な他のオプションを含んでいます。コメントで説明してありますので、よくお読みください。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();
});
更にremember
とforever
を一緒に使うこともできます。
$value = Cache::rememberForever('users', function()
{
return DB::table('users')->get();
});
キャッシュには全アイテムがシリアライズして保存されることに注目してください。ですからどんなタイプのデーターでも自由に保存できます。
キャッシュからアイテムを引き出す
キャッシュからあるアイテムを引き出し、その後削除したい場合は、pull
メソッドを使用します。
$value = Cache::pull('key');
キャッシュから一つのアイテムを消去する
Cache::forget('key');
増減操作
'file'と'database'を除くドライバーでは、increment
とdecrement
操作がサポートされています。
値を増加させる
Cache::increment('key');
Cache::increment('key', $amount);
値を減少させる
Cache::decrement('key');
Cache::decrement('key', $amount);
キャッシュタグ
注目:キャッシュタグは
file
とdatabase
キャッシュドライバーにはサポートされていません。さらに"forever"で保存されているキャッシュに多くのタグを使用する場合、古いレコードを自動パージするmemcached
のようなドライバーで最高のパフォーマンスが出せるでしょう。
タグ付けしたキャッシュにアクセスする
キャッシュタグにより、キャシュの中のアイテムをタグに関連付けることができるだけでなく、名前を指定しタグ付けした全キャッシュを消去することもできます。タグ付けしたキャッシュにアクセスするには、tags
メソッドを使用して下さい。
タグ付けしたキャッシュに保存するには、順序に沿って、引数にタグ名のリスト、もしくは配列を渡します。
Cache::tags('people', 'authors')->put('John', $john, $minutes);
Cache::tags(array('people', 'artists'))->put('Anne', $anne, $minutes);
remember
、forever
、rememberForever
を含め、全キャッシュ保存メソッドとタグを組み合わせて利用できます。また、increment
とdecrement
のようなその他のキャッシュメソッドも同様に、タグ付けしたキャッシュのアイテムへアクセスできます。
タグ付けしたキャッシュの中のアイテムへアクセスするe
タグ付けしたキャシュへアクセスするには、保存したのと同じ順番でタグのリストを渡してください。
$anne = Cache::tags('people', 'artists')->get('Anne');
$john = Cache::tags(array('people', 'authors'))->get('John');
名前、または名前のリストを指定し、タグ付けしたアイテムを全部消去できます。例えば、次のコードにより、people
かauthors
、またはその両方にタグ付けされた全キャッシュ済みアイテムが削除されます。ですから、"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');
});