MemCached no Windows e integração com o Wamp Server

maio 5th, 2010 | by suissa | escalabilidade, memcached, nosql, sql, wamp

mai
05

O que é Memcache?

É um serviço que roda stand-alone na máquina, que utiliza uma ou mais portas, e que pode ser inicializado, parado e reinicializado conforme necessidades. Ao contrário da sessão do PHP, que é visível somente dentro do escopo de acesso do usuário (claro que existem maneira de compartilhar sessões), o memcache é visível dentro de toda aplicação, ou seja, se tivermos 100 usuários on-line, eles compartilharão o mesmo cache.
A funcionalidade principal dele consiste em armazenar “qualquer coisa” na memória (RAM) do servidor para uso posterior. Segundo o site do próprio, ele é “um sistema distribuído de alto desempenho para o cacheamento (armazenamento) de objetos na memória, genérico por natureza, mas feito para aumentar a velocidade de sites dinâmicos, diminuindo a carga sobre o banco de dados”.

Quando usar o Memcache?

Suponhamos que você tenha um site que faz várias e várias consultas ao MySQL para exibir uma página e, algumas delas, demoram mais de 1 seguro para ser executada… Isso significa que o seu site não está otimizado e, obviamente, está mais lento do que poderia ser.
A maioria dos servidores – de qualidade – hoje em dia, já vêm com ele instalado… Caso você precise instalar ele no seu, recomendo dar uma olhada no site oficial( http://www.danga.com/memcached/ ) para maiores detalhes.
O que é e como é armazenado
Pense no Memcached como uma tabela de hash gigante. Toda informação individual armazenada possui basicamente 3 elementos:
  1. Identificador: um texto com tamanho máximo de 250 caracteres que identifica um corpo de informação. Equivale à chave primária com a qual já estamos acostumados a trabalhar no modelo relacional. Não há regras com relação ao seu valor: sendo assim, você é livre para identificar suas informações como quiser.
  2. Tempo de duração: o tempo (em segundos) que o Memcached manterá esta informação na memória. O tempo máximo suportado é 30 dias.
  3. Corpo: a informação em si. No caso do Memcached, esta possui tamanho máximo de 1 Mb. Se for pouco pra você, sempre é possível dividir a sua informação em mais de um bloco, compactá-la ou, se preferir, alterar o código fonte do Memcached (eu o li inteiro, e é BEM fácil de entender (se você souber C)).
Lembre-se: não se trata de um banco de dados.

Instalação

Baixe os binários do memcached no site http://code.jellycan.com/memcached/ (pegue os binários win32).
Descompacte o conteúdo do arquivo onde desejar (usei c:memcache), você deverá ter os seguintes arquivos dentro da pasta:
memcache.exe
Abra o terminal do windows. Executar cmd
Instale o memcache com o seguinte comando: c:memcachememcache.exe -d install
Inicialize o serviço com o seguinte comando: c:memcachememcache.exe -d start
Agora com o memcache instalado e iniciado, vamos a configuração do WAMP, antes de mais nada é preciso fazer o download da dll do memcache para windows neste endereço:
php5.2 http://downloads.php.net/pierre/php_memcache-5.2-Win32-vc6-x86-20090408.zip
php5.3 http://downloads.php.net/pierre/php_memcache-cvs-20090703-5.3-VC6-x86.zip
Cole a dll em C:\wamp\bin\php\php5.3.0\ext e cole essa dll dentro, feche o WAMP, inicie-o novamente.
Clique com o botão esquerdo no icone do wamp > php > php extensions > habilite a extensão memcache. Pronto, agora é só fazer um teste com o script postado abaixo e está tudo certo.
[php]
<?php
// Exemplo extraído do site www.php.net
$memcache = new Memcache;
$memcache->connect("localhost",11211);echo "Server's version: " . $memcache->getVersion() . "n";
$tmp_object = new stdClass;
$tmp_object->str_attr = "test";
$tmp_object->int_attr = 123;
$memcache->set("key",$tmp_object,false,10);
echo "Store data in the cache (data will expire in 10 seconds)n";
echo "Data from the cache:n";
var_dump($memcache->get("key"));
?>
[/php]

2 Comments »