En la mayoría de proyectos in­fo­r­má­ti­cos se usan bases de datos re­la­cio­na­les. Ya sea en el diseño de webs o en el de­sa­rro­llo de software, estas bases es­tru­c­tu­ra­das en tablas dan re­su­l­ta­dos buenos y estables en la mayoría de casos. Sin embargo ¿son siempre la opción ideal? En los últimos años han ido saliendo al mercado cada vez más tipos nuevos de bases de datos, todos con ventajas muy ca­ra­c­te­rí­s­ti­cas. Las llamadas bases de datos NoSQL, como la que ofrece Redis, son muy re­co­me­n­da­bles para algunos proyectos. ¿Cómo funciona Redis y qué ventajas ofrece este re­po­si­to­rio de datos?

Las bases de datos Redis

El nombre Redis proviene de las iniciales de Remote Di­c­tio­na­ry Server (servidor de di­c­cio­na­rio remoto), un tipo de servidor apto como memoria rápida para datos. Como sistema de gestión de base de datos (SGBD), Redis ofrece tanto una base de datos en memoria (in-memory database) como de clave-valor (key-value store):

  • Base de datos en memoria: en este tipo de bases de datos, el SGBD guarda todos los datos en la memoria principal, lo cual garantiza una respuesta rápida incluso con grandes conjuntos de datos sin es­tru­c­tu­rar.
  • Base de datos de clave-valor: gracias a su sencilla es­tru­c­tu­ra, estas bases de datos también ofrecen un alto re­n­di­mie­n­to y pueden escalarse fá­ci­l­me­n­te. Para cada entrada se crea una clave (key) mediante la que se puede volver a solicitar la in­fo­r­ma­ción en cuestión.

En un servidor Redis, por lo tanto, los datos no se guardan en el disco duro, sino en la memoria principal. Esto permite que Redis funcione como memoria caché y también como unidad de memoria principal, con in­de­pe­n­de­n­cia de si los datos pe­r­ma­ne­cen en la base por mucho o poco tiempo.

Cada entrada de la base de datos recibe asignada una clave con la que se pueden localizar los datos fá­ci­l­me­n­te de nuevo. De esta manera, las entradas no necesitan estar re­la­cio­na­das entre sí ni tampoco co­n­su­l­tar­se con varias tablas di­fe­re­n­tes, sino que la in­fo­r­ma­ción está di­s­po­ni­ble de manera directa.

Al depositar in­fo­r­ma­ción en la memoria, sin embargo, también se corre el riesgo de perder todos los datos si hubiera un fallo del servidor. Para evitar que eso ocurra, Redis puede, o bien hacer re­gu­la­r­me­n­te un duplicado de todos los datos en un disco duro se­cu­n­da­rio, o bien guardar en un archivo de registro todas las órdenes ne­ce­sa­rias para llevar a cabo una re­co­n­s­tru­c­ción.

La es­tru­c­tu­ra de datos típica de Redis está formada por las llamadas strings, es decir, cadenas simples de ca­ra­c­te­res. Las claves (parte del key-value store) también se han realizado como strings. El sistema, sin embargo, es también co­m­pa­ti­ble con otras es­tru­c­tu­ras de datos:

  • String: se­cue­n­cias de un tamaño máximo de 512 MB
  • Hash: entrada con varios campos
  • List: conjunto de strings cla­si­fi­ca­dos por orden de in­tro­du­c­ción
  • Set: conjunto de strings sin cla­si­fi­car
  • Sorted set (sets cla­si­fi­ca­do): conjunto de strings cla­si­fi­ca­do por el usuario
  • Bitmap: conjunto de ope­ra­cio­nes a nivel de bit
  • Hy­pe­r­Lo­gLog: es­ti­ma­ción según valores unívocos
  • Stream: lista de strings o pares complejos de key-value

Puesto que Redis es un sistema de código abierto, hay muchos de­sa­rro­lla­do­res tra­ba­ja­n­do para ampliar el sistema. Los llamados módulos o am­plia­cio­nes aumentan el rango de funciones de la base de datos, que por lo demás es bastante sencilla, y adaptan el software a ámbitos de uso es­pe­cí­fi­cos.

Hecho

Redis es de código abierto y cua­l­quie­ra puede usarlo de forma gratuita. Está pa­tro­ci­na­do pri­n­ci­pa­l­me­n­te por la empresa Redis Labs, que ofrece versiones en la nube, de pago, de este programa.

¿Para qué ámbitos de apli­ca­ción es más adecuado?

Un escenario estándar de Redis es el al­ma­ce­na­mie­n­to en caché, para lo cual también Twitter utiliza esta base de datos, por ejemplo: la propia timeline en el servicio de me­n­sa­je­ría es posible gracias a una caché de Redis. La timeline se compone pri­n­ci­pa­l­me­n­te de una lista que, gracias a Redis, puede so­li­ci­tar­se fá­ci­l­me­n­te y ampliarse de forma in­cre­me­n­tal.

No obstante, Redis también se utiliza para otros fines. Gracias a su velocidad de respuesta, por ejemplo, esta base de datos es perfecta para servicios de me­n­sa­je­ría o chat rooms. El sistema puede mostrar las nuevas entradas en tiempo real y actualiza re­gu­la­r­me­n­te las listas.

Consejo

Si ya te has co­n­ve­n­ci­do de las ventajas de Redis y quieres utilizar esta base de datos para tu proyecto, en nuestro sencillo tutorial de Redis te contamos cómo dar los primeros pasos.

Ventajas y de­s­ve­n­ta­jas de Redis

Redis es siempre una buena opción si se trata de obtener datos rá­pi­da­me­n­te. Gracias a la re­pli­ca­ción por defecto de los datos, la velocidad de lectura aumenta aún más y los datos pueden so­li­ci­tar­se desde di­fe­re­n­tes in­s­ta­n­cias. También la es­ca­la­bi­li­dad es un punto a favor de Redis, tanto la vertical como la ho­ri­zo­n­tal. Si la memoria principal del servidor Redis no fuese su­fi­cie­n­te, el software dispone de una gestión integrada de virtual memory que envía los datos al disco duro. Redis en sí está escrito en C, pero existen clientes para prá­c­ti­ca­me­n­te cualquier lenguaje de pro­gra­ma­ción.

Si lo que necesitas, sin embargo, es trabajar con conjuntos de datos complejos, que a su vez requieren opciones de búsqueda igua­l­me­n­te complejas, Redis no es la mejor opción. Con una base de datos de clave-valor, los datos en principio solo pueden so­li­ci­tar­se con la clave que les co­rre­s­po­n­de. Además, Redis requiere (al igual que otras bases de datos en memoria) muchísima capacidad en la memoria principal, lo cual puede re­fle­jar­se en los costes. A eso habría que añadir que se debería disponer de más espacio de al­ma­ce­na­mie­n­to del que ocupen los datos en sí.

En resumen

Siempre que haya que in­tro­du­cir y solicitar datos de manera rápida, Redis es una buena al­te­r­na­ti­va a las tra­di­cio­na­les bases de datos re­la­cio­na­les. Si la velocidad, en cambio, no es un factor decisivo y se prefiere una base de datos para tareas más complejas, valdría más recurrir a los sistemas tra­di­cio­na­les.

Ir al menú principal