O Memcache é um sistema de cache de memória distribuída de alta performance, que permite acesso rápido a objetos que são armazenados em seu cache. A utilização vai da criatividade e necessidade do programador, que pode armazenar resultados de consultas, imagens, objetos, códigos para rápido acesso posterior.
O uso de Memcache normalmente segue um padrão:
- O aplicativo recebe uma consulta do usuário ou do aplicativo.
- O aplicativo verifica se os dados necessários para satisfazer a consulta estão no cache de memória.
- Se os dados estiverem no cache de memória, o aplicativo utiliza os dados.
- Se os dados não estiverem no cache de memória, o aplicativo consulta o armazenamento de dados e armazena os resultados no cache de memória para solicitações futuras.
Legal, e no Kohana?
Primeiro passo, vamos copiar o arquivo /system/config/cache.php para /application/config/cache.php
Configure o arquivo para que fique desta forma:
$config['default'] = array( 'driver' => 'memcache', 'params' => '', 'lifetime' => 3600, 'requests' => 1000 );
Você pode alterar os parâmetros como precisa, onde sugiro:
lifetime = 3600 segundos (1h de timeout)
requests = 1000 (mil requisições de timeout)
E se o MemCache estiver em outro servidor?
Ai está, uma dica importante! Se você não executa o MemCache no mesmo servidor do Kohana, você precisa alterar o arquivo cache_memcache.php em application/config. Se você tiver mais de um servidor memcached, você pode adicioná-las ao array $config['servers']. Veja um exemplo:
$config['servers'] = array(
array(
'host' => '127.0.0.1',
'port' => 1234,
'persistent' => FALSE
)
);
Exemplos
Pronto as configurações, agora é a hora tão esperada em usar o cache, e realmente é a etapa mais fácil:
// Instancia o cache
$cache = Cache::instance();
// Tentando obter dados do cache
$retorno = $cache->get('item');
if(!$retorno)
{
// Dados não retornaram, obtendo dados da origem
$retorno = ORM::Factory('teste')->dados();
// Gravando novo cache
$cache->set('item',$retorno);
}
Simples, não? É Kohana e é por isso que eu gosto!

Pô o memcache é sem sombra de dúvidas uma mão na roda :D
Bela dica!
Show, teu blog lá no topo das pesquisas do Koahana hein…
show de bola Marcelo….
Mas acabei de ver teus posts e ainda não tem nada com session's ….
Quando tiver tempo, dá um exemplo básico, que qualquer dúvida a gente tira pelos comentários….
Fala Maicon,
Temos de divulgar o Kohana nas terras tupiniquins :)
Pode deixar, o post sobre sessions tá no forno.
Abraço!
eu gostaria de armazenar no cache um arquivo .zip de 50 MB, é possível com memcache ?
Leonardo,
Acredito que você confundiu o MemCache, pois ele trabalha com memória RAM.
Abraço
Marcelo,
Uma dúvida com relação a cache: a melhor prática é cachear:
- os resultados das consultas ao banco de dados;
- as views do renderizadas?
Pergunto pois estou usando a classe ORM e, buscando alternativas para cachear as páginas da minha aplicação, encontrei uma discussão na qual um desenvolvedor afirma que o cache deve ser feito nos Models, já que é nessa camada que os dados são tratados.
O que acha? Que alternativa você costuma adotar?
Kowalski,
Sou a favor de sempre cachear os dados que o ORM te devolve, até porque as views podem ser diferentes, como para uma versão mobile, por exemplo. Assim fica fácil de manter a aplicação, pois o model é responsável por verificar o cache e retornar ou atualizar se não existir. O Controller recebe isso de forma transparente e passa para a view que for necessária.
Por outro lado, no seu caso em específico pode ser interessante também cachear as views, se for pertinente ao seu projeto. O ganho de performance colocando as views já renderizadas em memória é grande.
Abraço!