O módulo Memcached fornece uma interface processual e orientada a objetos útil para o daemon de armazenamento em cache do memcached altamente eficaz, que foi especialmente projetado para diminuir a carga do banco de dados em aplicativos da Web dinâmicos.
O módulo Memcached também fornece um manipulador de sessão (memcache).
Dicas de onde usar Memcached na sua aplicação?
- Dashboards
- Listagens
- Consultas
O principal ponto do Memcached é que, ele diminui o tempo de resposta de suas páginas web, o que, em troca, melhora a experiência geral do cliente. Um melhor tempo de resposta permite que os usuários busquem dados perfeitamente.
Você pode verificar se já está instalado no seu servidor, através do phpinfo.
<?php
phpinfo();
Caso não esteja instalado ainda, basta seguir os passos abaixo.
yum install memcached
systemctl enable memcached
OBS: O módulo Memcached 3.0.8 não funciona com o php 7 (ou superior).
Um exemplo de conexão, para verificar se o Memcached está funcionando adequadamente.
<?php | |
// conectando no servidor memcached | |
$mcached = new \Memcached(); | |
$mcached->addServer("127.0.0.1", "11211"); | |
// definir uma chave | |
// chave | valor | tempo em segundos | |
$mcached->set("carros", ["uno", "gol", "ka"], 10); | |
// buscando resultado de uma chave | |
print_r($mcached->get("carros")); | |
// retorna: Array ( [0] => "uno" [1] => "gol" [2] => "ka" ) | |
// exibir todas as chaves definidas até o momento | |
print_r($mcached->getAllKeys()); | |
// para remover uma chave definida anteriormente | |
$mcached->delete("carros"); | |
// fecha a conexão com o servidor | |
$mcached->close(); |
A partir do exemplo de conexão, você pode criar funções inteligentes para consumir o cache e preencher o cache com informações atualizadas. O objetivo é obter informações sem precisar consultar o banco de dados. Somente se as informações não estiverem cacheadas iremos consultar a banco de dados e após armazenar as informações em cache para as futuras consultas.
<?php | |
// exemplo de função para consumir e inserir o cache | |
function fetchProdutos(): array | |
{ | |
$produtos = []; | |
try { | |
// faz a conexão com o servidor | |
$mcached = new \Memcached(); | |
$mcached->addServer("127.0.0.1", "11211"); | |
// verifica se já tem no cache, se tiver, retorna os dados do cache | |
$response = $mcached->get("produtos"); | |
if ($response) { | |
return $response; | |
} | |
// quando não tem no cache, precisa preencher | |
// então, fazemos a conexão com o mysql | |
$mysql = new \mysqli("localhost", "root", "123", "db"); | |
$buscarProdutos = $mysql->query("SELECT * FROM `produtos`;"); | |
while ($produto = $buscarProdutos->fetch_assoc()) { | |
$produtos[] = $produto; | |
} | |
// e, definimos no cache nossos dados atualizados | |
// a cada 1 hora o cache é automaticamente removido e preenchido | |
// com informações atualizadas do mysql | |
$mcached->set("produtos", $produtos, (60 * 60)); | |
return $produtos; | |
} catch (\Exception $e) { | |
return $produtos; | |
} | |
} |
Empresas que usam o Memcached
shopify.com
apple.com
walmart.com
Com o Memcached podemos arquitetar excelentes projetos com estruturas de cache em memória RAM utilizando diversos servidores. É recomendado salvar apenas as informações mais importantes.
Fontes
php.net
memcached.org
Top comments (0)