Laravel oferece uma API unificada para vários sistemas de cache diferentes. A configuração de cache está localizada em app/config/cache.php
. Nesse arquivo você pode escificar qual driver você quer usar por padrão na sua aplicação. Laravel também suporta os populares sistemas de cache como o Memcached e Redis.
O arquivo de configuração do cache também contém várias outras opções, que são documentadas no próprio arquivo, por isso certifique-se de ler sobre essas opções. Por padrão, o Laravel está configurado para usar o driver file
de cache, que armazena os objetos serializados em cache no sistema de arquivos. Para aplicações maiores, recomenda-se o uso de um cache em memória, tais como Memcached ou APC.
Guardando um item em cache
Cache::put('key', 'value', $minutes);
Guardando um item em cache caso ele não exista
Cache::add('key', 'value', $minutes);
Buscando um item da Cache
$value = Cache::get('key');
Buscando um item da cache, ou retornando um valor padrão caso ele não exista
$value = Cache::get('key', 'default');
$value = Cache::get('key', function() { return 'default'; });
Guardando um item em cache permanentemente
Cache::forever('key', 'value');
Pode ser que você queira buscar um item da cache, mas também, salvar um valor padrão caso o item procurado não exista.
Você pode fazer isso usando o método Cache::remember
:
$value = Cache::remember('users', $minutes, function()
{
return DB::table('users')->get();
});
Você também pode combinar os métodos remember
e forever
:
$value = Cache::rememberForever('users', function()
{
return DB::table('users')->get();
});
Note que todos os itens guardados em cache são serializados, isso significa que você pode guardar todo o tipo de dado.
Removendo um item da Cache
Cache::forget('key');
Todos os drivers com excessão de file
e database
suportam as operações increment
e decrement
:
Incrementando um valor
Cache::increment('key');
Cache::increment('key', $amount);
Decrementando um valor
Cache::decrement('key');
Cache::decrement('key', $amount);
Quando estiver usando driver database
, você precisará configurar uma tabela que receberá os itens. Abaixo um exemplo de um Schema
para a tabela:
Schema::create('cache', function($t)
{
$t->string('key')->unique();
$t->text('value');
$t->integer('expiration');
});