Redis (REmote DIctionary Server) (enlace externo a IBM) es un almacén de pares de clave/valor NoSQL en memoria de código abierto que se utiliza principalmente como memoria caché de aplicaciones o base de datos respuesta rápida. Como almacena datos en memoria, en lugar de en un disco o una unidad de estado sólido (SSD), Redis ofrece una velocidad, una fiabilidad y un rendimiento incomparables.
Cuando una aplicación se basa en orígenes de datos externos, la latencia y el rendimiento de esos orígenes pueden crear un cuello de botella de rendimiento, especialmente cuando aumenta el tráfico o la aplicación se escala. Una forma de mejorar el rendimiento en estos casos es almacenar y manipular datos en memoria, físicamente más cerca de la aplicación. Redis está diseñado para esta tarea: almacena todos los datos en memoria (y ofrece el rendimiento más rápido posible de lectura o grabación de datos) y proporciona prestaciones de réplica incorporadas que permiten colocar los datos físicamente más próximos al usuario con la mínima latencia.
Otras características de Redis que cabe destacar incluyen el soporte de varias estructuras de datos, los scripts Lua incorporados, varios niveles de persistencia en disco y una alta disponibilidad.
Redis se diferencia de los almacenes de datos NoSQL "tradicionales" como componente auxiliar diseñado específicamente para mejorar el rendimiento de la aplicación. A continuación, se muestran algunas prestaciones diferenciadoras de Redis:
De nuevo, a diferencia de las bases de datos NoSQL como MongoDB y PostgreSQL, Redis almacena los datos en la memoria principal del servidor, en lugar de en discos duros y unidades de estado sólido. Esto permite tiempos de respuesta significativamente más rápidos cuando se realizan operaciones de lectura y grabación. También permite garantizar una alta disponibilidad (junto con Redis Sentinel, véase más abajo) y una mayor escalabilidad de servicios y cargas de trabajo de aplicación.
Redis puede poner en cola las tareas que los clientes web pueden tardar más de lo habitual en procesar. Las colas de tareas multiproceso son un lugar común en muchas de las aplicaciones basadas en web actuales, y Redis facilita la implementación de procesos automatizados escritos en Python que se ejecutan en segundo plano en los ciclos de solicitud/respuesta.
Si bien técnicamente es almacén de pares de clave/valor, Redis es un servidor de estructuras de datos que admite varios tipos de datos y estructuras, por ejemplo:
Redis incluye prestaciones de integración de clientes nativas para ayudar a los desarrolladores a manipular e interactuar con sus datos. Actualmente, hay más de 100 clientes de código abierto diferentes disponibles en la biblioteca de clientes de Redis, y los desarrolladores pueden añadir fácilmente nuevas integraciones para dar soporte a lenguajes de programación y características adicionales.
Algunas de las características más importantes o destacadas de Redis incluyen las siguientes:
Redis Sentinel (enlace externo a IBM) es un sistema distribuido autónomo que ayuda a los desarrolladores a calibrar sus instancias para que estén altamente disponibles para los clientes. Sentinel utiliza una serie de procesos de supervisión, notificaciones y migraciones tras error automáticas para informar a los usuarios cuando hay algún problema con las instancias de maestro y esclavo, a la vez que reconfigura automáticamente nuevas conexiones para las aplicaciones cuando sea necesario.
Clúster de Redis (enlace externo a IBM) es una implementación distribuida de Redis que divide automáticamente los conjuntos de datos entre varios nodos. Esto permite aumentar el rendimiento y la escalabilidad de los despliegues de bases de datos, a la vez que garantiza operaciones continuas en el caso de que los subconjuntos de nodos no puedan comunicarse con el resto del clúster.
Como Redis admite el uso de mandatos de publicación y suscripción (Pub/Sub) (enlace externo a IBM), los usuarios pueden diseñar servicios de chat y mensajería de alto rendimiento en todas sus aplicaciones y servicios. Esto incluye la capacidad de utilizar estructuras de datos de lista para ejecutar operaciones atómicas y prestaciones de bloqueo.
Redis utiliza un almacenamiento de disco persistente (enlace externo a IBM) diseñado para sobrevivir a las interrupciones de proceso y a los cuellos de botella de red. Redis puede hacer persistir los conjuntos de datos tomando instantáneas periódicas de los datos y añadiéndoles cambios a medida que estén disponibles. A continuación, Redis se puede configurar para generar copias de seguridad de la base de datos a demanda o a intervalos automáticos, para garantizar la durabilidad y la integridad de la base de datos.
Tanto Redis como Memcached son almacenes de datos en memoria de código abierto, pero tienen ventajas y características diferentes. Memcached suele ser la opción preferida para las aplicaciones simples que requieren menos recursos de memoria, pero tiene limitaciones de almacenamiento de datos en su formato serializado. El uso de Redis de las estructuras de datos ofrece mucha más potencia cuando se trabaja con grandes conjuntos de datos, tiene una mayor capacidad para ajustar el contenido de la memoria caché y mantiene una mayor eficiencia en escenarios de aplicación específicos.
Mientras que Redis es un almacén de base de datos en memoria, MongoDB se conoce como un almacén de documentos en disco. Aunque ambas soluciones se han creado para diferentes propósitos, a menudo se usan conjuntamente para maximizar la velocidad y la eficiencia de una base de datos NoSQL. Gracias a su capacidad de almacenamiento en memoria caché, Redis puede localizar los datos necesarios con extremada rapidez. De esta forma, sirve como un almacenamiento intermedio de ingesta que permite que MongoDB sea más eficaz y pueda gestionar mayores frecuencias de actualizaciones de documentos casi en tiempo real. Con la capacidad de MongoDB para almacenar cantidades significativas de datos y la capacidad de Redis para procesarlos más rápido, la combinación de ambos ofrece una poderosa solución de gestión de bases de datos para una amplia variedad de casos de uso.
A continuación, se muestran algunos casos de uso comunes de las ventajas que pueden obtener las empresas al trabajar con Redis:
La iniciación a Redis es un proceso bastante sencillo, especialmente con el uso de Redis Desktop Manager (RDM) (enlace externo a IBM). Como Redis y RDM son de código abierto, las comunidades de desarrollo activo siempre están trabajando para mejorar la eficacia de su funcionamiento y hacer avanzar continuamente las herramientas y las integraciones compatibles.
Para obtener más información sobre la instalación y la configuración de Redis, siga las instrucciones de configuración disponibles en la comunidad (enlace externo a IBM).
Un almacén de valores de clave en memoria y de código abierto diseñado para una pila de aplicaciones modernas.
Cómo elegir la base de datos adecuada para su aplicación nativa en nube.
Todo lo que necesita saber sobre NoSQL, un tipo de diseño de base de datos que ofrece más flexibilidad que las bases de datos tradicionales.
Esta guía explora las características y las ventajas de utilizar MongoDB como parte de la solución de gestión de bases de datos de empresa.