Agilizar aplicaciones con Memcached

Tengo últimamente un poco abandonado el tema de la arquitectura de aplicaciones web, básicamente porque últimamente se han dado situaciones que me han hecho plantearme o recordar cosas más relacionadas con el otro gran tema del que suelo hablar, que es la industrialización.

Pero hoy me ha llegado un email de mi proveedor de hosting, bueno ahora es más cool llamarlo nube, y tenia una entrada en su blog sobre memcached.

Para los que no tengan muy claro que es memcached, aparte de leer el citado blog, decir que es un software que almacena en memoria datos. Podríais pensar que eso no es nada nuevo, una simple tabla hash de java almacena datos en memoria.

Y en esencia es lo mismo, pero memcached es una hash vitaminada, muy vitaminada.

Las ventajas que nos aporta son las siguientes:

– Se puede poner un límite al empleo de memoria, es decir si en una hash de java metemos datos sin parar nos quedaríamos sin memoria. En memcached en cambio cuando llega al límite marcado empieza a descartar.

– Se puede poner un límite de tiempo, es decir a diferencia de la tabla hash de java en la que una vez metido un valor nosotros tenemos que borrarlo manualmente o ahí se queda de por vida, en memcached podemos decirle el tiempo que queremos que se mantenga y el solito lo borra una vez pasado ese tiempo.

– Se puede compartir y esta es una de las principales diferencias con una hash de java. La hash de java vive en la memoria de la máquina virtual, así que el acceso es muy rápido pero solo puede acceder a ella el código que se ejecute en esa máquina virtual.

Si tienes por ejemplo una aplicación de ventas de libros con varios servidores y decides cachear todos los productos, cada servidor tendrá una copia del catálogo de productos.

Es decir un acceso muy rápido pero poco eficiente en el uso de los recursos.

Memcached en cambio es un servidor. Eso quiere decir que es un poco más lento, pero aprovecha mejor la memoria.