設定Configuration
Laravelは多くのキャッシュシステムに統一したAPIを提供しています。キャッシュの設定はconfig/cache.php
で設定します。アプリケーション全体でデフォルトとして使用するキャッシュドライバーをこのファイルの中で指定します。MemcachedやRedisなど、人気のあるキャッシュシステムをLaravelは最初からサポートしています。Laravel provides a unified API
for various caching systems. The cache configuration
is located at config/cache.php
. In this
file you may specify which cache driver you would
like used by default throughout your application.
Laravel supports popular caching backends like
Memcached[http://memcached.org] and
Redis[http://redis.io] out of the
box.
キャッシュ設定ファイルは、様々な他のオプションを含んでいます。コメントで説明してありますので、よく読んで確認してください。Laravelのデフォルトでは、file
キャッシュドライバーが設定されています。ファイルシステムにオブジェクトをシリアライズして保存します。大きなアプリケーションでは、MemecachedやAPCのような、メモリに保存するキャッシュを使用することをおすすめします。The cache configuration file also
contains various other options, which are documented
within the file, so make sure to read over these
options. By default, Laravel is configured to use
the file
cache driver, which stores the
serialized, cached objects in the filesystem. For
larger applications, it is recommended that you use
an in-memory cache such as Memcached or APC. You may
even configure multiple cache configurations for the
same driver.
LaravelでRedisキャシュを使用する場合、predis/predis
パッケージ(~1.0)をComposerでインストールしておく必要があります。Before using a Redis cache with
Laravel, you will need to install the
predis/predis
package (~1.0) via
Composer.
キャッシュの使用Cache Usage
キャッシュへアイテムを保存Storing An Item In The Cache
Cache::put('key', 'value', $minutes);
Carbonオブジェクトを有効日時として設定Using Carbon Objects To Set Expire Time
$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);
存在していなければ、キャッシュにアイテムを保存Storing An Item In The Cache If It Doesn't Exist
Cache::add('key', 'value', $minutes);
add
メソッドは本当にキャッシュに追加した場合のみtrue
を返します。それ以外の場合はfalse
を返します。The add
method will
return true
if the item is actually
added to the cache. Otherwise, the
method will return false
.
キャッシュ中の存在チェックChecking For Existence In Cache
if (Cache::has('key'))
{
//
}
キャッシュからアイテム取得Retrieving An Item From The Cache
$value = Cache::get('key');
アイテムを一つ取得するかデフォルト値取得Retrieving An Item Or Returning A Default Value
$value = Cache::get('key', 'default');
$value = Cache::get('key', function() { return 'default'; });
アイテムを永久に保存Storing An Item In The Cache Permanently
Cache::forever('key', 'value');
場合により、キャッシュからアイテムを取得するとき、それが存在しない場合にはデフォルト値を保存したいこともあるでしょう。それにはCache::remember
メソッドを使用できます。Sometimes you may wish to
retrieve an item from the cache, but also store a
default value if the requested item doesn't exist.
You may do this using the
Cache::remember
method:
$value = Cache::remember('users', $minutes, function()
{
return DB::table('users')->get();
});
更にremember
とforever
を一緒に使うこともできます。You may also combine the
remember
and forever
methods:
$value = Cache::rememberForever('users', function()
{
return DB::table('users')->get();
});
キャッシュには全アイテムがシリアライズして保存されることに注目してください。ですからどんなタイプのデーターでも自由に保存できます。Note that all items stored in the cache are serialized, so you are free to store any type of data.
キャッシュからのアイテム取り出しPulling An Item From The Cache
キャッシュからあるアイテムを引き出し、その後削除したい場合は、pull
メソッドを使用します。If you need to retrieve an item
from the cache and then delete it, you may use the
pull
method:
$value = Cache::pull('key');
キャッシュからアイテム消去Removing An Item From The Cache
Cache::forget('key');
特定のキャッシュ保存域へアクセスAccess Specific Cache Stores
複数のキャッシュ保存域を使用している場合、store
メソッドによりアクセスできます。When using multiple cache stores,
you may access them via the store
method:
$value = Cache::store('foo')->get('key');
増減操作Increments & Decrements
database
以外の全ドライバーで、increment
とdecrement
操作をサポートしています。All drivers except
database
support the
increment
and decrement
operations:
値の増加Incrementing A Value
Cache::increment('key');
Cache::increment('key', $amount);
値の減少Decrementing A Value
Cache::decrement('key');
Cache::decrement('key', $amount);
キャッシュタグCache Tags
**注目:**キャッシュタグは
file
とdatabase
キャッシュドライバーにはサポートされていません。さらに"forever"で保存されているキャッシュに多くのタグを使用する場合、古いレコードを自動パージするmemcached
のようなドライバーで最高のパフォーマンスが出せるでしょう。Note: Cache tags are not supported when using thefile
ordatabase
cache drivers. Furthermore, when using multiple tags with caches that are stored "forever", performance will be best with a driver such asmemcached
, which automatically purges stale records.
タグ付けしたキャッシュへアクセスAccessing A Tagged Cache
キャッシュタグにより、キャシュの中のアイテムをタグに関連付けることができるだけでなく、名前を指定しタグ付けした全キャッシュを消去することもできます。タグ付けしたキャッシュにアクセスするには、tags
メソッドを使用して下さい。Cache tags allow you to tag
related items in the cache, and then flush all
caches tagged with a given name. To access a tagged
cache, use the tags
method.
タグ付けしたキャッシュに保存するには、順序に沿って、引数にタグ名のリスト、もしくは配列を渡します。You may store a tagged cache by passing in an ordered list of tag names as arguments, or as an ordered array of tag names:
Cache::tags('people', 'authors')->put('John', $john, $minutes);
Cache::tags(['people', 'artists'])->put('Anne', $anne, $minutes);
remember
、forever
、rememberForever
を含め、全キャッシュ保存メソッドとタグを組み合わせて利用できます。また、increment
とdecrement
のようなその他のキャッシュメソッドも同様に、タグ付けしたキャッシュのアイテムへアクセスできます。You may use any cache storage
method in combination with tags, including
remember
, forever
, and
rememberForever
. You may also access
cached items from the tagged cache, as well as use
the other cache methods such as
increment
and
decrement
.
キャッシュ中のタグ付きアイテムへアクセスAccessing Items In A Tagged Cache
タグ付けしたキャシュへアクセスするには、保存したのと同じ順番でタグのリストを渡してください。To access a tagged cache, pass the same ordered list of tags used to save it.
$anne = Cache::tags('people', 'artists')->get('Anne');
$john = Cache::tags(['people', 'authors'])->get('John');
名前、または名前のリストを指定し、タグ付けしたアイテムを全部消去できます。例えば、次のコードにより、people
かauthors
、またはその両方にタグ付けされた全キャッシュ済みアイテムが削除されます。ですから、"Anne"と"John"両アイテムはキャッシュから削除されます。You may flush all items tagged
with a name or list of names. For example, this
statement would remove all caches tagged with either
people
, authors
, or both.
So, both "Anne" and "John" would
be removed from the cache:
Cache::tags('people', 'authors')->flush();
その一方、次のコードではauthors
タグ付けされたキャッシュだけが削除されるため、"John"は削除されますが、"Anne"は残ります。In contrast, this statement would
remove only caches tagged with authors
,
so "John" would be removed, but not
"Anne".
Cache::tags('authors')->flush();
イベントキャッシュCache Events
キャッシュの全操作ごとにコードを実行する必要があるならば、キャッシュにより発行されるイベントを購読してください。To execute code on every cache operation, you may listen for the events fired by the cache:
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 Cache
database
キャッシュドライバーを使う場合、キャッシュアイテムを保存するテーブルを用意する必要があります。テーブル宣言を行うSchema
の一例です。When using the
database
cache driver, you will need to
setup a table to contain the cache items. You'll
find an example Schema
declaration for
the table below:
Schema::create('cache', function($table)
{
$table->string('key')->unique();
$table->text('value');
$table->integer('expiration');
});
MemcachedキャッシュMemcached Cache
Memcachedキャッシュを使用するためには、Memcached PECLパッケージをインストールする必要があります。Using the Memcached cache requires the Memcached PECL package[http://pecl.php.net/package/memcached] to be installed.
デフォルト設定では、Memcached::addServerに基づいたTCP/IPを使用します。The default configuration[#configuration] uses TCP/IP based on Memcached::addServer[http://php.net/manual/en/memcached.addserver.php]:
'memcached' => array(
array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
),
host
オプションにUNIXソケットパスを指定することも可能です。その場合、port
オプションに0
を指定してください。You may also set the
host
option to a UNIX socket path. If
you do this, the port
option should be
set to 0
:
'memcached' => array(
array('host' => '/var/run/memcached/memcached.sock', 'port' => 0, 'weight' => 100),
),
RedisキャッシュRedis Cache
Redis設定を参照してください。See Redis Configuration[/docs/redis#configuration]