DocumentaçãoCommerceGuia de configuração

Somente PaaS

Configurar memória em cache no CentOS

Última atualização: 18 de julho de 2024
  • 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.

INFO
o Adobe recomenda usar a versão estável mais recente memcached (atualmente 3.1.3 para 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ão memcache 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:

  1. 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, digite yum install -y php56w-pecl-memcache. Use yum search memcache|grep php para localizar o nome de pacote apropriado.
  2. Alterar a definição da configuração memcached para CACHESIZE e OPTIONS:

    1. Abra /etc/sysconfig/memcached em um editor de texto.

    2. Localize o valor de CACHESIZE e altere-o para pelo menos 1 GB. Por exemplo:

      CACHESIZE="1GB"
      
    3. Localize o valor de OPTIONS e altere-o para localhost ou 127.0.0.1

  3. Salve as alterações em memcached e saia do editor de texto.

  4. Reiniciar memcached.

    service memcached restart
    
  5. Reinicie o servidor Web.

    Para o Apache:

    service httpd restart
    
  6. 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:

  1. Crie um arquivo phpinfo.php no docroot do servidor Web:

    <?php
    // Show all information, defaults to INFO_ALL
    phpinfo();
    
  2. Vá para essa página em seu navegador da Web.

    Por exemplo, http://192.0.2.1/phpinfo.php

  3. Verifique se o memcache é exibido da seguinte maneira:

Confirmar memcache é reconhecido pelo servidor Web

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

Informações adicionais sobre o teste Telnet

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c