Configurar memória em cache no CentOS
- Tópicos:
- Configuração
- Cache
Criado para:
- Experiente
- Administrador
- Desenvolvedor
Esta seção fornece instruções para instalar o memcached no CentOS. Para obter informações adicionais, consulte o wiki memcached.
Como o PHP não tem suporte nativo para memcache, você deve instalar uma extensão para o PHP usá-lo. Há duas extensões PHP disponíveis e é importante decodificar quais usar:
-
memcache
(no d) — uma extensão mais antiga, mas popular, que não é mantida regularmente.
A extensãomemcache
atualmente não funciona com o PHP 7. Consulte a documentação do PHP para memcache.O nome exato é
php-pecl-memcache
para CentOS. -
memcached
(comd
)—uma extensão mais recente e mantida que é compatível com o PHP 7. Consulte a documentação do PHP para memcached.O nome exato é
php-pecl-memcached
para CentOS.
Instalar e configurar o memcached no CentOS
Para instalar o memcached no CentOS, execute as seguintes tarefas como um usuário com privilégios root
:
-
Instalar o memcached e suas dependências:
yum -y update
yum install -y libevent libevent-devel
yum install -y memcached
yum install -y php-pecl-memcache
INFO
A sintaxe dos comandos anteriores pode depender de quais repositórios de packages você usa. Por exemplo, se você usa webatic e PHP 5.6, digiteyum install -y php56w-pecl-memcache
. Useyum search memcache|grep php
para localizar o nome de pacote apropriado. -
Alterar a definição da configuração memcached para
CACHESIZE
eOPTIONS
:-
Abra
/etc/sysconfig/memcached
em um editor de texto. -
Localize o valor de
CACHESIZE
e altere-o para pelo menos 1 GB. Por exemplo:CACHESIZE="1GB"
-
Localize o valor de
OPTIONS
e altere-o paralocalhost
ou127.0.0.1
-
-
Salve as alterações em
memcached
e saia do editor de texto. -
Reiniciar memcached.
service memcached restart
-
Reinicie o servidor Web.
Para o Apache:
service httpd restart
-
Prossiga para a próxima seção.
Verificar trabalhos memcached antes de instalar o Commerce
A Adobe recomenda testar o memcached para verificar se ele funciona antes de instalar o Commerce. Isso leva apenas alguns minutos e pode simplificar a solução de problemas posteriormente.
Verificar se o memcached é reconhecido pelo servidor Web
Para verificar se o memcached é reconhecido pelo servidor Web:
-
Crie um arquivo
phpinfo.php
no docroot do servidor Web:<?php // Show all information, defaults to INFO_ALL phpinfo();
-
Vá para essa página em seu navegador da Web.
Por exemplo,
http://192.0.2.1/phpinfo.php
-
Verifique se o memcache é exibido da seguinte maneira:
Verifique se você está usando a versão memcached 3.0.5 ou posterior.
Se o memcache não for exibido, reinicie o servidor Web e atualize a página do navegador. Se ainda assim não for exibido, verifique se você instalou a extensão php-pecl-memcache
.
Criar um teste de memcache consistindo em um banco de dados MySQL e um script PHP
O teste usa um banco de dados, tabela e dados MySQL para verificar se você pode recuperar os dados do banco de dados e armazená-los no memcache. Um script PHP primeiro pesquisa no cache. Se o resultado não existir, o script consultará o banco de dados. Depois que a consulta é atendida pelo banco de dados original, o script armazena o resultado no memcache, usando o comando set
.
Mais detalhes sobre este teste
Crie o banco de dados MySQL:
mysql -u root -p
No prompt mysql
, digite os seguintes comandos:
create database memcache_test;
GRANT ALL ON memcache_test.* TO memcache_test@localhost IDENTIFIED BY 'memcache_test';
use memcache_test;
create table example (id int, name varchar(30));
insert into example values (1, "new_data");
exit
Crie cache-test.php
no docroot do seu servidor Web:
$meminstance = new Memcached();
$meminstance->addServer('<memcached hostname or ip>', <memcached port>);
$query = "select id from example where name = 'new_data'";
$querykey = "KEY" . md5($query);
$result = $meminstance->get($querykey);
if (!$result) {
try {
$dbh = new PDO('mysql:host=localhost;dbname=memcache_test','memcache_test','memcache_test');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $dbh->query("select id from example where name = 'new_data'")->fetch();
$meminstance->set($querykey, $result, 0, 600);
print "got result from mysql\n";
return 0;
} catch (PDOException $e) {
die($e->getMessage());
}
}
print "got result from memcached\n";
return 0;
Onde <memcached hostname or ip>
é localhost
, 127.0.0.1
, ou o nome de host ou endereço IP do memcache. O <memcached port>
é a porta de escuta; por padrão, 11211
.
Execute o script a partir da linha de comando.
cd <web server docroot>
php cache-test.php
O primeiro resultado é got result from mysql
. Isso significa que a chave não existia no memcached, mas foi recuperada do MySQL.
O segundo resultado é got result from memcached
, que verifica se o valor está armazenado com êxito no memcached.
Finalmente, você pode visualizar as chaves de memcache usando Telnet:
telnet localhost <memcache port>
No prompt, digite
stats items
O resultado é semelhante ao seguinte:
STAT items:3:number 1
STAT items:3:age 1075
STAT items:3:evicted 0
STAT items:3:evicted_nonzero 0
STAT items:3:evicted_time 0
STAT items:3:outofmemory 0
STAT items:3:tailrepairs 0
Liberar o armazenamento memcache e sair do Telnet:
flush_all
quit