Uti­li­za­n­do bases de datos en memoria como Memcached y Redis aumenta co­n­si­de­ra­ble­me­n­te el re­n­di­mie­n­to de las apli­ca­cio­nes dinámicas y de alto re­n­di­mie­n­to vi­n­cu­la­das a una base de datos. Ambas so­lu­cio­nes son de código abierto y funcionan bajo pri­n­ci­pios similares. No obstante, existen algunas di­fe­re­n­cias entre ambas cachés que merece la pena conocer de antemano, es­pe­cia­l­me­n­te en lo relativo a funciones y ámbitos de uso.

Mientras que Memcached se orienta pri­n­ci­pa­l­me­n­te a la si­m­pli­ci­dad, Redis ofrece una amplia gama de funciones adi­cio­na­les que pueden serte útiles o su­pe­r­fluas, de­pe­n­die­n­do de la apli­ca­ción que utilices. Descubre qué tienen en común y en qué se di­fe­re­n­cian ambas so­lu­cio­nes de al­ma­ce­na­je de datos en memoria.

Breve in­tro­du­c­ción a Memcached y Redis

Mientras que Memcached se lanzó hace casi 20 años, Redis salió al mercado unos siete años después. En aquel momento, los de­sa­rro­lla­do­res de Memcached tenían el objetivo de evitar la ra­le­n­ti­za­ción provocada por el acceso a las bases de datos, ne­ce­sa­rias cuando se utilizan apli­ca­cio­nes web so­fi­s­ti­ca­das. Fue todo un éxito: Memcached (nombre que proviene de in-memory cache service) pro­po­r­cio­na elementos guardados en caché con la ayuda de valores clave a la velocidad de la luz, volviendo in­ne­ce­sa­rio el acceso al disco duro. La base de datos en memoria Redis (de remote di­c­tio­na­ry server), tiene una es­tru­c­tu­ra de clave-valor similar y, al igual que Memcached, se utiliza en ámbitos como los sitios web, los vi­deo­jue­gos y el eCommerce.

¿Qué tienen en común?

Las bases de datos en memoria de Memcached y Redis leen los datos a una velocidad muy elevada, lo que logra reducir el tiempo de respuesta al rango de los mi­li­se­gu­n­dos. Ambos sistemas son fáciles de utilizar a nivel si­n­tá­c­ti­co y pueden in­co­r­po­rar­se a las apli­ca­cio­nes sin necesidad de código complejo. Además, Memcached y Redis permiten que los datos se di­s­tri­bu­yan en varios nodos, lo que facilita la es­ca­la­bi­li­dad a medida que aumenta el volumen de datos. Por otra parte, ambas so­lu­cio­nes de código abierto son co­m­pa­ti­bles con gran variedad de pro­to­co­los y lenguajes de pro­gra­ma­ción, como Java, Python, PHP, C, C++, C#, Ja­va­S­cri­pt, Node.js, Ruby y Go.

Memcached vs. Redis: ¿en qué se di­fe­re­n­cian?

Aunque Me­m­cha­ched y Redis tienen mucho en común, también existen algunas di­fe­re­n­cias entre ellos. A co­n­ti­nua­ción, te pre­se­n­ta­mos las más im­po­r­ta­n­tes:

Ar­qui­te­c­tu­ra: Memcached funciona según el principio del multihilo y puede utilizar varios núcleos de proceso a la vez. En cambio, Redis utiliza un solo núcleo, lo que significa que el motor rinde mejor con pequeñas ca­n­ti­da­des de datos. Cuando se trata de almacenar grandes ca­n­ti­da­des de datos, Memcached le lleva ventaja.

Tipos de datos: Memcached solo puede gestionar cadenas de ca­ra­c­te­res simples o strings de hasta 1 MB. Redis, por su parte, admite cadenas de hasta 512 MB, así como es­tru­c­tu­ras de datos más complejas, como listas, hashes, flujos, conjuntos, conjuntos ordenados, mapas de bits e Hy­pe­r­Lo­gLo­gs. Redis también puede medir y guardar datos geo­grá­fi­cos.

Pe­r­si­s­te­n­cia de datos: Redis no es un sistema de al­ma­ce­na­mie­n­to en memoria puro como Memcached. Cuando el servidor de Memcached se queda sin espacio para nuevos elementos, los datos menos so­li­ci­ta­dos se eliminan au­to­má­ti­ca­me­n­te. También se pierden si falla una instancia de Memcached. En Redis, los datos pueden re­s­tau­rar­se gracias a la función Snapshot o el modo AOF (append only file). Sin embargo, este último puede conllevar una leve bajada de re­n­di­mie­n­to y co­n­si­guie­n­te ra­le­n­ti­za­ción.

Gestión de clústeres: con Redis, los datos no solo se di­s­tri­bu­yen en el lado del cliente, como con Memcached, sino también en el lado del servidor. Los nodos del clúster de Redis pueden in­te­r­ca­m­biar datos entre sí. Si un su­b­co­n­ju­n­to de nodos falla, esto tiene poco o ningún efecto en los tiempos de respuesta. En Memcached, sin embargo, tal in­te­r­ca­m­bio de datos no es posible.

Tra­n­sac­cio­nes: ambos sistemas de al­ma­ce­na­mie­n­to en memoria utilizan comandos atómicos, lo que significa que los valores in­tro­du­ci­dos se muestran in­me­dia­ta­me­n­te en el lado del cliente conectado. Sin embargo, a di­fe­re­n­cia de Memcached, Redis también puede ejecutar comandos de grupo en forma de procesos atómicos aislados. Esta función de Redis se denomina pi­pe­li­ni­ng (ca­na­li­za­ción) y garantiza que Redis pueda responder a varios comandos al mismo tiempo.

Pub/Sub: Redis es co­m­pa­ti­ble con la ar­qui­te­c­tu­ra Pub/Sub, un servicio de me­n­sa­je­ría que permite que las apli­ca­cio­nes se co­mu­ni­quen entre sí de manera eficiente. Esta función se utiliza en salas de chat de alto re­n­di­mie­n­to, co­mu­ni­ca­ción de streaming en vivo, feeds de redes sociales y co­mu­ni­ca­ción entre di­fe­re­n­tes se­r­vi­do­res.

Se­cue­n­cias de comandos Lua: si Redis debe realizar cálculos complejos, los de­sa­rro­lla­do­res tienen la po­si­bi­li­dad de utilizar se­cue­n­cias de comandos Lua. En este script ligero se puede in­co­r­po­rar una nueva lógica sin mucho esfuerzo, lo que aumenta el re­n­di­mie­n­to y facilita el uso.

Memcached vs. Redis: tabla co­m­pa­ra­ti­va

Memcached Redis
Fácil de instalar y utilizar Fácil de instalar y utilizar
Latencia en el rango de mi­li­se­gu­n­dos Latencia en el rango de mi­li­se­gu­n­dos
Código abierto y co­m­pa­ti­ble con los lenguajes de pro­gra­ma­ción ha­bi­tua­les Código abierto y co­m­pa­ti­ble con los lenguajes de pro­gra­ma­ción ha­bi­tua­les
Motor multihilo ideal para grandes ca­n­ti­da­des de datos Motor de su­b­pro­ce­so único ideal para ca­n­ti­da­des de datos más pequeñas
Es­ca­la­bi­li­dad vertical Es­ca­la­bi­li­dad vertical y ho­ri­zo­n­tal (ver el apartado sobre la gestión de clústeres)
Longitud de clave limitada a 250 ca­ra­c­te­res (1 MB) Co­m­pa­ti­bi­li­dad con muchos tipos de datos (hasta 512 MB)
Al­ma­ce­na­mie­n­to en memoria puro sin pe­r­si­s­te­n­cia de datos ni pro­te­c­ción contra fallos Re­s­tau­ra­ción de datos mediante Snapshot, AOF y al­ma­ce­na­mie­n­to en un disco duro de respaldo
Ideal para almacenar en caché y guardar datos de sesión Ideal para procesos complejos y múltiples pro­ce­di­mie­n­tos que deben eje­cu­tar­se si­mu­l­tá­nea­me­n­te

En resumen

Memcached y Redis son dos sistemas de al­ma­ce­na­mie­n­to de datos en memoria bien diseñados, que se di­fe­re­n­cian sobre todo en los aspectos re­la­cio­na­dos con la co­m­pa­ti­bi­li­dad con formatos de datos, la gestión de clústeres, la ad­mi­ni­s­tra­ción de la memoria y la pe­r­si­s­te­n­cia de los datos. La respuesta a cuál de los dos motores es el más adecuado dependerá de cada apli­ca­ción. Si ya utilizas Memcached y no te hace falta ninguna otra función, quizás no merezca la pena que te pases a Redis. Sin embargo, si necesitas más funciones y quieres proteger mejor los datos, Redis es una buena al­te­r­na­ti­va.

Ir al menú principal