Está usted en Indice > Maletin > Artículos > Memcached: un alivio para las bases de datos
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Memcached: un alivio para las bases de datos

¿Qué es Memcached?

Memcached es definido por Danga Interactive , la empresa que lo desarrollo y mantiene el proyecto bajo licencia BSD como un “sistema distribuido de alta performance 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 idea es muy simple y a la vez muy efectiva: un servicio que escucha en un host y un port específico, que puede almacenar cadenas de bytes ( strings ). De esta manera, podríamos estar guardando en memoria una estructura serializada de PHP o Java, un string encodeado con Json, o un documento de cualquier formato (después de todo no dejan de ser cadenas de bytes).

Existe actualmente una implementacion de Memcached Server que corre en Win32 . Si bien no es oficial, cuenta con el apoyo de varios desarrolladores de la comunidad.

Funcionamiento

A grandes rasgos, el Memcached Server almacena los strings (internamente denominados ítems), en una gran tabla de hash, y los mapea según la clave que le asociemos a dicho ítem.

Dicha tabla de hash adopta una estructura de porciones de memoria de tamaño variable (denominadas slabs), con el objetivo de optimizar la asignación del espacio de memoria.

Un dato no menor es el slab de mayor tamaño (1 Mb), siendo este por consiguiente el tamaño máximo que un ítem puede tener si quiere ser almacenado en Memcached Server (aunque este valor puede ser modificado desde el código fuente).

Su arquitectura escalable nos permite mantener un pool de Memcached servers, característica que bien puede ser explotada en momentos donde la cantidad de conexiones no puede ser gestionada por un único Server. En ese caso, el pool optará por otro Server, balanceando la carga de conexiones.

Protocolo

La comunicación de clientes con servidor es muy simple, y basada en comandos. El protocolo Memcached implementa 3 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 solo si existe.

Memcached permite controlar el tiempo de vida de un objeto, indicando el “tiempo de expiración” para el 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 cache, utilizar algún tipo de compresión, entre otros.

Ejemplo de uso

<?php // Inicializamos y conectamos $memcache = new Memcache; $memcache->connect('localhost', 11211) or die("No podemos conectarnos"); // Creamos una estructura a cachear $pichongol = new stdClass; $pichongol->nombre = “Daniel”; $pichongol->apellido = “Lopez”; // Almacenamos 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); ?>

¿Quiénes usan Memcached?

Usuarios que han visto este tema también han visto...

- Pestañas en diseño web, cuándo y cómo usarlas
- Razones comunes para el fracaso de un sitio web
- Cómo responder a una oferta de empleo
- El banner como vehículo hacia tu Web
- Aparecer en rápidamente en buscadores


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 26-05-2012 a las 16:54:35