実践Laravel 基本編12 Cacheを制する

Posted: 2014-07-13 23:11 |  laravel 

キャッシュを制する

実務、または中規模以上の開発を行う場合に、
どのフレームワークでも、どんな言語でも必須と言っても良いキャッシュをLaravelでも使用しましょう
(もちろん小規模でも使いますよ!)
ご存知の様にLaravelでCacheを使用する場合は、
\Cache::get('hoge');
などと書くだけで、何も考えずにいつでもすぐに、どこでも使用できます。
使うたびにキャッシュのインスタンスを生成して云々というものを、
モデルやコントローラーに書く必要はありません。

Laravelでデフォルトでサポートされているキャッシュドライバーは、
"file", "database", "apc", "memcached", "redis", "array" です。
インストール時はfileが設定されているはずです。
デフォルトは/app/storage/cache 配下に書き込まれます。
webサーバが1台のみのあまり規模が大きくない開発や、
バックオフィス系等は1台構成が多いと思いますので、
その際はfileで十分対応できますが、
所有者などの設定等を必ず確認する様にしましょう。
所有者周りが原因でキャッシュが削除できない、という場合もあるかと思います。

webサーバ複数台構成の場合は、fileの場合はサーバ間でキャッシュ共有は不可能ですので、
データベースのrememberなどを使ってキャッシュする場合に
異なるデータを保持して、不具合等の発生原因にもなりますので、
複数台構成の場合は、必ずmemcachedやredisにしましょう。

キャッシュを削除する

コマンドラインからキャッシュを削除する場合は
$ php artisan cache:clear
です。
ドライバーは問わず、統一したコマンドで削除可能です。
fileの場合は前述の通り、所有者云々で削除できない場合がありますので、
必ず環境を確認しましょう。

DBファサードでremember

rememberを使用すると、クエリーの結果をそのままキャッシュする事が出来ます。
ただし、QueryBuilderとEloquentのみで、
selectなどを使用する場合は、\Cacheと組み合わせて実装して下さい。
 
\DB::connection('hoge')->table('hoge')->remember(120)->get();
キャッシュキーを指定したい場合は、
 
\DB::connection('hoge')->table('hoge')->remember(120, 'cacheKey')->get();
と、指定する事が出来ます。
ここで指定したキャッシュの値は、
\Cache::get('cacheKey');
で取得する事が出来ます。
update等で値が変更された場合は、forgetで削除する様にすると良いでしょう。

キャッシュのドライバーを変更する

実装時に、この値はDBに保持させて、こっちはRedisなど
処理によって変更したいケースも多々あるかと思います。
その場合は、下記の様にして簡単に変更する事が出来ます。
\Cache::setDefaultDriver('redis');
ファサードのおかげで簡単です。

キャッシュで細かくタグ付け

これは、fileとdatabaseをドライバーに選択している場合は利用する事が出来ませんが、
キャッシュのキーの他にタグをつけて保持させる事が出来ます。
ページャーや、ランキング等、条件によって頻繁に変わるもの等に使用する事が多いと思います。

キャッシュの利用方法自体は、難しいものではないため、
公式のリファレンスと、少しコードを読むだけで内容がわかると思います。
Laravelのキャッシュは非常に使い勝手が良いので、
是非使いこなしてみましょう!


 

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014