Memcached

RECU-0265 (Recurso Ficha Técnica)

Descripción

Se trata de un sistema distribuido de alto rendimiento, para el cacheo de objetos en memoria, genérico por naturaleza, pero pensado para incrementar la velocidad de aplicaciones web dinámicas, aliviando la carga de las bases de datos.

La forma de trabajar de Memcached es de concepción muy sencilla. Se evitan accesos a la base de datos para solicitar determinada información, en cambio se accede a Memcached (el servidor de Memcache) a través de TCP/IP (así se puede acceder a servidores Memcache en máquinas remotas o en local). En el caso que exista información, la devuelve y si no existe se realiza la petición a la base de datos y se introducen los datos en Memcached para que puedan ser accedidos directamente la próxima vez que los necesitemos. Además cada dato introducido en Memcached tiene un tiempo de expiración, tras pasar este tiempo almacenado en el servidor este se considera descartable y se borra del servidor, dejando espacio para otros objetos.

Ejemplo de uso

<?php 

// Se incializa y se crea la conexión
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("No podemos conectarnos");

// Se crea una estructura a cachear
$pichongol = new stdClass;
$pichongol->nombre = “Daniel”;
$pichongol->apellido = “Lopez”;

// Se almacena la estructura con una expiracion de 10 segundos
$memcache->set(“pichongol”, $pichongol, false, 10) or die ("No podemos guardar la estructura");

// Recuperamos la estructura
$result = $memcache->get(“pichongol”);
echo "Estructura recuperada:<br/>\n";
print_r($result);

?>

Ventajas e inconvenientes

  • Memcached permite ajustar el espacio de memoria dedicado, dado que se ejecuta como servidores montados sobre uno o varios equipos.
  • Este sistema ofrece la posibilidad de almacenar lo que se quiera, a criterio del desarrollador. Lo que facilita que se puedan cachear cosas tan diversas como resultados de cálculos o consultas a base de datos complejas, información de sesiones de los usuarios, etc.
  • La comunicación que se produce entre clientes y el servidor es muy sencilla, y basada en comandos. El protocolo Memcached implementa tres comandos de almacenamiento, con pequeñas diferencias en su funcionamiento:
    • SET: Actualiza el objeto si no existía anteriormente, o lo agrega en caso contrario.
    • ADD: Agrega el objeto solo si no existe.
    • REPLACE: Actualiza el objeto sólo si existe.
  • Ofrece la posibilidad de controlar el tiempo de vida de un objeto, indicando el “tiempo de expiración” asociado al mismo, en el momento de realizar una operación de almacenamiento.
  • A su vez, posee un comando de recuperación: GET. Podemos eliminar un objeto mediante el comando DELETE. Además, el protocolo implementa comandos para recuperar estadísticas, vaciar el caché, utilizar algún tipo de compresión, entre otros.

Requisitos e incompatibilidades

No tiene restricciones singulares

Contenidos relacionados

Pautas