Configuración de memcached en CentOS
- 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é.
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ónmemcache
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
:
-
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, escribayum install -y php56w-pecl-memcache
. Useyum search memcache|grep php
para encontrar el nombre de paquete apropiado. -
Cambie el parámetro de configuración memcached para
CACHESIZE
yOPTIONS
:-
Abra
/etc/sysconfig/memcached
en un editor de texto. -
Busque el valor de
CACHESIZE
y cámbielo por lo menos a 1 GB. Por ejemplo:CACHESIZE="1GB"
-
Busque el valor de
OPTIONS
y cámbielo alocalhost
o127.0.0.1
-
-
Guarde los cambios en
memcached
y salga del editor de texto. -
Reinicie memcached.
service memcached restart
-
Reinicie el servidor web.
Para Apache:
service httpd restart
-
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:
-
Crear un archivo de
phpinfo.php
en el docroot del servidor web:<?php // Show all information, defaults to INFO_ALL phpinfo();
-
Vaya a esa página en el explorador web.
Por ejemplo,
http://192.0.2.1/phpinfo.php
-
Asegúrese de que memcache se muestre de la siguiente manera:
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