El nombre Redis proviene de las iniciales de Remote Dictionary Server (servidor de diccionario 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 estructurar.
- Base de datos de clave-valor: gracias a su sencilla estructura, estas bases de datos también ofrecen un alto rendimiento y pueden escalarse fácilmente. Para cada entrada se crea una clave (key) mediante la que se puede volver a solicitar la informació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 comounidad dememoria principal, con independencia de si los datos permanecen 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ácilmente de nuevo. De esta manera, las entradas no necesitan estar relacionadas entre sí ni tampoco consultarse con varias tablas diferentes, sino que la información está disponible de manera directa.
Al depositar informació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 regularmente un duplicado de todos los datos en un disco duro secundario, o bien guardar en un archivo de registro todas las órdenes necesarias para llevar a cabo una reconstrucción.
La estructura de datos típica de Redis está formada por las llamadas strings, es decir, cadenas simples de caracteres. Las claves (parte del key-value store) también se han realizado como strings. El sistema, sin embargo, es también compatible con otras estructuras de datos:
- String: secuencias de un tamaño máximo de 512 MB
- Hash: entrada con varios campos
- List: conjunto de strings clasificados por orden de introducción
- Set: conjunto de strings sin clasificar
- Sorted set (sets clasificado): conjunto de strings clasificado por el usuario
- Bitmap: conjunto de operaciones a nivel de bit
- HyperLogLog: estimació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 desarrolladores trabajando para ampliar el sistema. Los llamados módulos o ampliaciones 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 específicos.