DocumentaciónCommerceGuía de configuración

Solo PaaS

Configuración de memcached en CentOS

18 de julio de 2024
  • Temas:
  • Configuración
  • Caché

Creado para:

  • Experimentado
  • Administrador
  • Desarrollador

Esta sección proporciona instrucciones para instalar memcached en CentOS. Para obtener más información, consulte la wiki en memoria caché.

INFO
El Adobe recomienda utilizar la última versión estable de memcached (actualmente 3.1.3 para memcached).

Debido a que PHP no tiene soporte nativo para memcache, debe instalar una extensión para que PHP la use. Hay dos extensiones PHP disponibles y es importante descodificar cuál utilizar:

  • memcache (no d): una extensión antigua pero popular que no se mantiene con regularidad.
    La extensión memcache actualmente no funciona con PHP 7. Consulte la documentación de PHP para memcache.

    El nombre exacto es php-pecl-memcache para CentOS.

  • memcached (cond), una extensión más reciente y mantenida que es compatible con PHP 7. Consulte la documentación de PHP para memcached.

    El nombre exacto es php-pecl-memcached para CentOS.

Instalación y configuración de memcached en CentOS

Para instalar memcached en CentOS, realice las siguientes tareas como usuario con privilegios de root:

  1. Instale memcached y sus dependencias:

    yum -y update
    
    yum install -y libevent libevent-devel
    
    yum install -y memcached
    
    yum install -y php-pecl-memcache
    
    INFO
    La sintaxis de los comandos anteriores puede depender de los repositorios de paquetes que utilice. Por ejemplo, si usa webtatic y PHP 5.6, escriba yum install -y php56w-pecl-memcache. Use yum search memcache|grep php para encontrar el nombre de paquete apropiado.
  2. Cambie el parámetro de configuración memcached para CACHESIZE y OPTIONS:

    1. Abra /etc/sysconfig/memcached en un editor de texto.

    2. Busque el valor de CACHESIZE y cámbielo por lo menos a 1 GB. Por ejemplo:

      CACHESIZE="1GB"
      
    3. Busque el valor de OPTIONS y cámbielo a localhost o 127.0.0.1

  3. Guarde los cambios en memcached y salga del editor de texto.

  4. Reinicie memcached.

    service memcached restart
    
  5. Reinicie el servidor web.

    Para Apache:

    service httpd restart
    
  6. Continúe con la siguiente sección.

Verificar que memcached funcione antes de instalar Commerce

Adobe recomienda probar memcached para asegurarse de que funciona antes de instalar Commerce. Hacerlo solo lleva unos minutos y puede simplificar la resolución de problemas más adelante.

Verificar que el servidor web reconozca memcached

Para comprobar que el servidor web reconoce memcached:

  1. Crear un archivo de phpinfo.php en el docroot del servidor web:

    <?php
    // Show all information, defaults to INFO_ALL
    phpinfo();
    
  2. Vaya a esa página en el explorador web.

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

  3. Asegúrese de que memcache se muestre de la siguiente manera:

El servidor web reconoce memcache

Compruebe que está utilizando memcached versión 3.0.5 o posterior.

Si no se muestra memcache, reinicie el servidor web y actualice la página del navegador. Si sigue sin mostrarse, compruebe que ha instalado la extensión php-pecl-memcache.

Cree una prueba memcache que consista en una base de datos MySQL y un script PHP

La prueba utiliza una base de datos, tabla y datos MySQL para comprobar que puede recuperar los datos de la base de datos y almacenarlos en memcache. Un script PHP busca primero en la caché. Si el resultado no existe, el script consulta la base de datos. Una vez que la base de datos original ha completado la consulta, el script almacena el resultado en memcache, utilizando el comando set.

Más detalles acerca de esta prueba

Cree la base de datos MySQL:

mysql -u root -p

En el símbolo del sistema mysql, escriba los siguientes 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

Cree cache-test.php en el docroot de su 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;

Donde <memcached hostname or ip> es localhost, 127.0.0.1 o el nombre de host o la dirección IP de memcache. <memcached port> es el puerto de escucha; de forma predeterminada, 11211.

Ejecute la secuencia de comandos desde la línea de comandos.

cd <web server docroot>
php cache-test.php

El primer resultado es got result from mysql. Esto significa que la clave no existía en memcached pero se recuperó de MySQL.

El segundo resultado es got result from memcached, que comprueba que el valor se almacena correctamente en memcached.

Finalmente, puede ver las claves memcache usando Telnet:

telnet localhost <memcache port>

En el mensaje, escriba

stats items

El resultado es similar al siguiente:

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

Vaciar el almacenamiento de memcache y salir de Telnet:

flush_all
quit

Información adicional acerca de la prueba Telnet

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