Laravel 5.0 キャッシュ

設定

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

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

LaravelでRedisキャシュを使用する場合、predis/predisパッケージ(~1.0)をComposerでインストールしておく必要があります。

キャッシュの使用

キャッシュへアイテムを保存

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');

特定のキャッシュ保存域へアクセス

複数のキャッシュ保存域を使用している場合、storeメソッドによりアクセスできます。

$value = Cache::store('foo')->get('key');

増減操作

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(['people', 'artists'])->put('Anne', $anne, $minutes);

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

キャッシュ中のタグ付きアイテムへアクセス

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

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

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

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

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

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

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

イベントキャッシュ

キャッシュの全操作ごとにコードを実行する必要があるならば、キャッシュにより発行されるイベントを購読してください。

Event::listen('cache.hit', function($key, $value) {
    //
});

Event::listen('cache.missed', function($key) {
    //
});

Event::listen('cache.write', function($key, $value, $minutes) {
    //
});

Event::listen('cache.delete', function($key) {
    //
});

データベースキャッシュ

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

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

Memcachedキャッシュ

Memcachedキャッシュを使用するためには、Memcached PECLパッケージをインストールする必要があります。

デフォルト設定では、Memcached::addServerに基づいたTCP/IPを使用します。

'memcached' => array(
    array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
),

hostオプションにUNIXソケットパスを指定することも可能です。その場合、portオプションに0を指定してください。

'memcached' => array(
    array('host' => '/var/run/memcached/memcached.sock', 'port' => 0, 'weight' => 100),
),

Redisキャッシュ

Redis設定を参照してください。

ドキュメント章別ページ

Artisan CLI

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる