Redis para principiantes

Redis (Remote Dictionary Server) es una Base de Datos con un motor de almacenamiento Clave-Valor. Además, los datos residen, principalmente, en memoria, lo que proporciona a este sistema unos muy buenos tiempos de respuesta en la recuperación de la información.

El origen de Redis

Escrita en ANSI C a principios del año 2009 por Salvatore Sanfilippo. Su nacimiento deriva de la necesidad de mejorar los tiempos de respuesta de un proyecto en el que trabajaba llamado LLOGG. En el año 2012, VMWare contrata a Salvatore y a Pieter Noordhuis para trabajar de lleno en Redis.

¿Una BD Clave-Valor más?

Redis está basada en una estructura de tablas hash donde cada clave tiene un valor asociado. En comparación con otras bases de datos de tipo Clave-Valor, Redis permite el uso de estructuras más complejas y flexibles que abren una serie de posibilidades ante las distintas necesidades de aplicaciones de negocio.

Características y funcionalidades de Redis

A continuación, describiremos algunas de las principales características de Redis:

Tipos de datos

Redis ofrece 5 estructuras de datos con los que es posible modelar la solución más adecuada para cubrir las necesidades de un proyecto.

  • Strings: Secuencia de bytes, es el valor básico que se puede asignar a un a Clave. Permite elementos con valor de hasta 512 MB.

  • Lists: Colecciones de cadenas (Strings). Permite la inserción o borrado de elementos en cualquier extremo de la lista (head o tail) en un tiempo constante, manteniendo el mismo orden en el que fueron insertados. Permite hasta 4 billones de elementos por lista.

  • Sets: Se trata de una colección de Strings sin un orden determinado de almacenamiento. No permite valores duplicados para una misma Clave, por lo tanto, no se requiere de validaciones para verificar su existencia. Útiles para efectuar operaciones entre sets, tales como uniones, intersecciones y diferencias. Permite hasta 4 billones de elementos por colección.

  • Sorted Sets: Similar a los Sets, con la variante que cada elemento de un grupo de datos cuenta con una calificación (Score) asociado. Este Score determinará el orden. Permite hasta 4 billones de elementos por colección.

  • Hashes: Usado para representar objetos. Almacena conjuntos de pares Clave-Valor de cadena, asociados a una misma clave. No existe un límite de campos dentro de una Hash.

Memoria y velocidad

Gracias a que la información queda almacenada en memoria en lugar del disco, Redis ofrece rápidos accesos en la recuperación de los datos.

Persistencia periódica a disco

Redis nos da la posibilidad de escribir los datos en disco. Esto sirve como complemento cuando los datos trabajados superan el máximo de memoria con la que se dispone o para disponer de ellos ante fallas del servidor. Existen dos tipos de configuración:

  • RDB: Intervalos específicos de conjuntos de datos (Point-in-time Snapshots)
  • Append-only-file: Cada operación es escrita en un log recibida por el servidor, de tal manera que es posible reconstruir los sets de datos una vez reiniciado

Expiración de Claves

Cuando los datos no son requeridos después de cierto tiempo, pueden ser eliminados de manera manual o de manera automática, mediante la asignación de un «tiempo de vida» a una Clave determinada.

Replicación Maestro-Esclavo

Permite la replicación y comunicación automática dentro de una arquitectura Maestro-Esclavo, con lo que se asegura contar con copias exactas de los datos. Un servidor maestro puede tener muchos esclavos y un esclavo a su vez puede cumplir el rol de maestro para otros esclavos.

¿Cuándo usar Redis?

El uso de Redis es altamente recomendable cuando la velocidad de acceso y tiempos de respuesta son críticos para una solución de negocio. Su uso es también indicado cuando se trabaja con aplicaciones en tiempo real, lo cual requiere que los datos se encuentren rápidamente accesibles para mejorar los tiempos de respuesta. Entre los casos de uso más comunes podemos encontrar:

  • Sistemas de chat y mensajería
  • Listado de elementos más recientes
  • Contadores y uso de estadísticas en tiempo real
  • Manejo y administración de carros de compra en línea
  • Almacenamiento de sesiones de usuario dentro de una aplicación
  • Soporte como caché de páginas web

Ventajas y Desventajas de Redis

Ventajas Desventajas
  • Una velocidad muy por encima de la media respecto a otras DB de su tipo, gracias a su almacenamiento en memoria
  • Posibilidad de persistir datos en disco para recuperación ante fallas
  • Fácil configuración
  • Alta disponibilidad
  • Curva de aprendizaje baja
  • Extensible usando LUA scripting
  • Una variedad de tipos de datos
  • El método de persistencia RDB consume mucho I/O (escritura en disco)
  • Todos los datos trabajados deben encajar en la memoria (en caso de no usar persistencia física)

 

Redis representa una alternativa más de almacenamiento de datos dentro del paradigma NOSQL. Si bien existen otros sistemas de almacenamiento Clave-Valor, Redis destaca por agregar nuevas estructuras de datos que abren un gran abanico de posibilidades para atender distintas casuísticas del negocio. Hoy en día, se ubica como una de las bases de datos más usadas dentro del paradigma Clave-Valor, debido en gran parte a su velocidad de respuesta como consecuencia del uso de la memoria como sistema de almacenamiento.