Memcached suele uti­li­zar­se en los casos en que conviene aumentar el re­n­di­mie­n­to de las apli­ca­cio­nes dinámicas co­ne­c­ta­das a una base de datos. Esta base de datos en memoria asegura, entre otras cosas, que se obtengan los datos de la memoria RAM sin necesidad de acceder al disco duro, lo cual no solo alivia la carga de los sistemas backend, sino que también reduce si­g­ni­fi­ca­ti­va­me­n­te el tiempo de latencia. Sitios web de renombre como YouTube, Facebook, Twitter y Wikipedia llevan mucho tiempo uti­li­za­n­do las ventajas de esta solución de código abierto y, de esta manera, han co­n­se­gui­do mejorar la ex­pe­rie­n­cia de na­ve­ga­ción de los usuarios de Internet. Pero ¿cómo funciona exac­ta­me­n­te Memcached y cuáles son los primeros pasos para im­ple­me­n­tar­lo? Aprende todo lo que necesitas de este popular sistema de al­ma­ce­na­mie­n­to en caché.

¿Qué es Memcached?

Memcached es un sistema de al­ma­ce­na­mie­n­to en caché de alto re­n­di­mie­n­to de­sa­rro­lla­do hace casi veinte años por la empresa Danga In­ter­ac­ti­ve para el portal de Internet Li­ve­Jou­r­nal. Este servidor de caché se creó con el objetivo de evitar la ra­le­n­ti­za­ción provocada por el acceso a las bases de datos al utilizar apli­ca­cio­nes web so­fi­s­ti­ca­das. Para so­lu­cio­nar esto, se de­sa­rro­lló una base de datos en memoria que pone a di­s­po­si­ción del usuario del sitio web los elementos guardados en caché en muy poco tiempo. El software de Memcached es muy fácil de utilizar, instalar y co­n­fi­gu­rar. Además, como se ejecuta bajo la licencia BSD, también se puede utilizar, modificar y copiar li­bre­me­n­te.

¿Qué aspecto tiene la ar­qui­te­c­tu­ra de Memcached?

La es­tru­c­tu­ra general de Memcached es re­la­ti­va­me­n­te simple. Recuerda a un sistema de base de datos di­s­tri­bui­da y consta de la apli­ca­ción, una bi­blio­te­ca cliente y un grupo de in­s­ta­n­cias Memcached, que pueden in­s­ta­lar­se ili­mi­ta­da­me­n­te en la memoria principal de un servidor. Es mejor habilitar una instancia en cada servidor que pueda carecer de memoria. Juntas, estas in­s­ta­n­cias adquieren el espacio libre di­s­po­ni­ble para la caché. La interfaz entre la co­rre­s­po­n­die­n­te apli­ca­ción y Memcached es la bi­blio­te­ca cliente, que registra los datos que deben guardarse y los almacena en un servidor di­s­po­ni­ble. Gracias a su ar­qui­te­c­tu­ra mu­l­ti­pro­ce­so, Memcached también puede utilizar varios núcleos de proceso a la vez.

Nota

Además de Memcached, existe Redis, otro famoso sistema de al­ma­ce­na­mie­n­to de datos en memoria. Mientras que Memcached destaca por su si­m­pli­ci­dad, Redis ofrece muchas funciones y po­si­bi­li­da­des de uso. Con nuestra co­m­pa­ra­ti­va de Memcached vs. Redis, podrás ide­n­ti­fi­car qué software es el más adecuado para tus objetivos.

¿Cómo funciona Memcached?

Las bases de datos co­n­ve­n­cio­na­les almacenan los datos en un disco duro, pre­fe­ri­ble­me­n­te en una unidad de estado sólido o solid state drive (SSD). En cambio, con Memcached, los datos pe­r­ma­ne­cen en la memoria, de modo que están di­s­po­ni­bles en mi­cro­se­gu­n­dos y se elimina la ra­le­n­ti­za­ción que provoca la búsqueda para re­cu­pe­rar­los. Aunque es posible guardar los datos durante un largo período de tiempo, la mayoría se elimina au­to­má­ti­ca­me­n­te después de un tiempo de­te­r­mi­na­do. Esto es debido a que Memcached es una caché pura y no una base de datos en el sentido clásico, por lo que los datos menos so­li­ci­ta­dos se eliminan tan pronto como falta espacio para los elementos nuevos. Pero ¿cómo funciona exac­ta­me­n­te este proceso de al­ma­ce­na­mie­n­to?

Memcached también se conoce como un sistema de al­ma­ce­na­mie­n­to de clave-valor en memoria. En primer lugar, se establece la conexión con el servidor con ayuda de los pro­to­co­los TCP e IP. Si un usuario desea recuperar ciertos datos, Memcached comprueba si están di­s­po­ni­bles en la caché. Si no es el caso, los datos re­que­ri­dos se obtienen de la memoria principal. A co­n­ti­nua­ción, el cliente pro­po­r­cio­na los datos co­rre­s­po­n­die­n­tes con un valor clave o estos son se­ria­li­za­dos por la bi­blio­te­ca de programas. Mediante un algoritmo hash, el cliente se­le­c­cio­na el servidor Memcached en el que se al­ma­ce­na­rán los datos en forma de cadenas de ca­ra­c­te­res. Estas son las cinco ca­ra­c­te­rí­s­ti­cas más im­po­r­ta­n­tes de Memcached:

  • Los datos solo se envían a un servidor
  • Los datos se almacenan en forma de pares clave-valor
  • Los distintos se­r­vi­do­res no comparten ningún dato entre sí
  • Los se­r­vi­do­res solo almacenan datos en la memoria RAM
  • Si no hay su­fi­cie­n­te espacio, el servidor descarta los datos más antiguos

¿Qué ventajas e in­co­n­ve­nie­n­tes tiene Memcached?

Para valorar si Memcached es la mejor solución de al­ma­ce­na­mie­n­to en caché, hay que tener en cuenta los re­qui­si­tos y la co­m­ple­ji­dad de la apli­ca­ción en cuestión. Por ejemplo, este sistema de al­ma­ce­na­mie­n­to temporal es es­pe­cia­l­me­n­te útil para las apli­ca­cio­nes web con mucho tráfico y las páginas que acceden a grandes bases de datos. Por supuesto, además de sus muchas ventajas, también tiene algunos posibles in­co­n­ve­nie­n­tes. A co­n­ti­nua­ción, te pre­se­n­ta­mos un resumen:

Ventajas In­co­n­ve­nie­n­tes
Tiempo de respuesta ex­tre­ma­da­me­n­te reducido gracias al al­ma­ce­na­mie­n­to de valores en memoria Guarda los datos solo te­m­po­ra­l­me­n­te y los pierde si falla una instancia de Memcached
La ar­qui­te­c­tu­ra mu­l­ti­pro­ce­so permite la es­ca­la­bi­li­dad vertical de la capacidad del ordenador Los datos no se pueden ver, lo que dificulta la de­pu­ra­ción
Solución madura de código abierto con al­ma­ce­na­mie­n­to de datos abierto La longitud de la clave de los valores se limita a 250 ca­ra­c­te­res (1 MB)
Ofrece un uso sencillo y fle­xi­bi­li­dad para el de­sa­rro­llo de apli­ca­cio­nes La falta de me­ca­ni­s­mos de seguridad requiere utilizar un co­r­ta­fue­gos adicional
Admite formatos de datos abiertos y los clientes y lenguajes de pro­gra­ma­ción más comunes No es re­du­n­da­n­te, es decir, no duplica ni realiza copias de seguridad de los datos para pro­te­ge­r­los contra los fallos

¿En qué casos se utiliza Memcached?

Memcached puede uti­li­zar­se para guardar datos en caché y almacenar datos de sesión. Gracias al al­ma­ce­na­mie­n­to en caché, elementos como archivos, metadatos e imágenes están di­s­po­ni­bles a la velocidad de la luz. Esto te permite escalar el sistema de manera rentable en caso de aumento de la carga de trabajo para mejorar el re­n­di­mie­n­to de la apli­ca­ción. Los de­sa­rro­lla­do­res también utilizan el al­ma­ce­na­mie­n­to en memoria para gestionar los datos de sesión, como los perfiles de usuario o el estado de la sesión en Internet. Sin embargo, si se opta por utilizar esta he­rra­mie­n­ta, la pe­r­ma­ne­n­cia de los datos no se co­n­si­de­ra­rá un factor que tener en cuenta. En la mayoría de los casos, Memcached es una buena solución cuando las apli­ca­cio­nes requieren una caché de alto re­n­di­mie­n­to y gran escala.

Primeros pasos con Memcached

Sin duda, los pri­n­ci­pa­les puntos fuertes de Memcached son su velocidad, su es­ca­la­bi­li­dad y el hecho de ser co­m­pa­ti­ble con todas las API y lenguajes más populares, in­clu­ye­n­do Ruby, Java, Ja­va­S­cri­pt, Python, Go, PHP, C, C++, C# y Node.js. Además, no es muy co­m­pli­ca­do in­s­ta­lar­lo en los sistemas ope­ra­ti­vos Windows o Unix. Danga In­ter­ac­ti­ve ofrece el daemon Memcached para su descarga gratuita. Además del paquete de de­sa­rro­lla­dor adecuado, también necesitas una bi­blio­te­ca libevent que habilite las no­ti­fi­ca­cio­nes de eventos asi­n­cró­ni­cas. De­pe­n­die­n­do del lenguaje de pro­gra­ma­ción utilizado, hay di­s­po­ni­bles varias opciones de co­n­fi­gu­ra­ción para el cliente y el servidor después de la in­s­ta­la­ción.

Como Memcached se trata de un proyecto de código abierto, cuenta con una gran comunidad que lleva muchos años uti­li­zá­n­do­lo y dándole forma. Esto tiene la ventaja de que tengas en línea a tu di­s­po­si­ción in­fo­r­ma­ción detallada sobre el software, su im­ple­me­n­ta­ción y la re­so­lu­ción de problemas para varias API y sistemas ope­ra­ti­vos.

Ir al menú principal