Redis

Redis – Stream processing con Redis Streams

Redis Streams, inspirado en Apache Kafka, es una solución de mensajería para sistemas distribuidos donde los datos llegan continuamente, son almacenados (ofrece persistencia), y procesados en tiempo real con garantía de entrega y de procesamiento, como ocurre en entornos de IoT y Big Data. Un Stream es un conjunto de mensajes o eventos temporales, que pueden llegar de forma masiva (gran volumen) y a gran velocidad. Puede trabajarse con uno o varios Streams, con múltiples Productores (ej: sensores IoT o microservicios comunicándose asíncronamente), y múltiples Grupos de Consumidores (ej: cálculos en tiempo real, descarga a Data Lake o Data Warehouse, etc), para formar un sistema escalable y tolerante ante fallos

Redis – Escalabilidad con Redis Cluster

Redis Cluster proporciona escalabilidad horizontal, al dividir los datos que tenemos en Redis entre varios nodos (Shards) entre los que se repartiran las claves a almacenar. De este modo, aunque alcancemos el límite de recursos de nuestra máquina, podremos seguir creciendo a base de añadir más nodos (escalado horizontal), donde cada nodo almacena y se responsabiliza sólamente de una parte de las claves (un conjunto de slots). Además, se puede combinar con la Replicación, consiguiendo una gran escalabilidad (horizontal y vertical) y alta disponibilidad, pero… sólo podremos utilizar db0, cambiará la forma de conectar, aumentará el coste de mantenimiento (razón para pensar en Redis en Cloud), y asumiremos algunas limitaciones relacionadas con comandos que actúan sobre varios slots

Redis – Replicación y Automatic Failover con Sentinel

Redis proporciona un mecanismo asíncrono de Replicación, con el que podemos tener una o varias réplicas de lectura para aumentar la disponibilidad o repartir las lecturas entre más instancias mejorando el rendimiento, apoyándose en Sentinel para proporcionar Automatic Failover, sin necesidad de un Cluster, aunque nos cambiará la forma de conectarnos a Redis

Redis – Persistencia y Durabilidad

Redis proporciona dos mecanismos para permitir la persistencia de los datos en disco, y que no se pierdan tras un reinicio, un aspecto muy importante al tratarse de una base de datos que almacena todos sus datos en memoria, pudiendo utilizar cualquiera de ellos o ambos a la vez (una solución híbrida): Snapshotting (similar a un Backup Full) y AOF (similar a un Backup del Log de Transacciones).

Redis – Instalación en Ubuntu

La instalación de Redis para un entorno de Producción que soporte una carga de trabajo importante, tiene varios detalles a tener en cuenta, tanto de cómo hacer la instalación, como de diferentes configuraciones necesarias a realizar, tanto a nivel de Redis como del Sistema Operativo. En este Artículo te cuento los detalles más importantes, para instalar Redis en Ubuntu, para un entorno de alta carga.

Redis – Procedimientos Almacenados con Lua

Redis permite la ejecución de código dentro de la base de datos, mediante Lua, de forma similar a los procedimientos almacenados de las bases de datos relacionales, pudiendo trabajar con las claves de forma eficiente evitando su transferencia a través de la red, así como programar transacciones complejas. Lua es un lenguaje de Scripting ligero, potente, y eficiente, un proyecto Open Source con licencia MIT, y un lenguaje que podremos utilizar para escribir código de servidor en Redis

Redis – Indices Geoespaciales

Los índices geoespaciales de Redis almacenan puntos (nombres asociados a coordenadas: latitud y longitud), que al ser almacenados en memoria, son rápidamente actualizables y apropiados para mostrar la localización en tiempo real de personas, vehículos, o cualquier elemento que pueda cambiar su posición, y permiten ejecutar consultas geoespaciales (ej: distancia entre dos puntos, restaurantes cercanos en un radio determinado, etc).

Redis – Publicación y Suscripción de mensajes

Redis permite la creación de un bus básico de mensajes/eventos a través de su mecanismo de Publicación y Suscripción, pudiendo crear canales/topics «efímeros» (no se almacenan en memoria) donde publicar mensajes que puedan recibir uno o varios suscriptores (sólo aquellos que estén conectados cuando el mensaje se envía, al ser un canal efímero, sin persistencia), actuando como un Broker para múltiples clientes que permite desacoplar publicadores de suscriptores, favoreciendo la escalabilidad

Redis – Transacciones

Cada comando en Redis es atómico, se ejecuta de forma completa e independiente, o en caso de fallo, no aplicarán ningún cambio a la base de datos, para mantener su integridad. Sin embargo, en ocasiones podemos necesitar el uso de Transacciones en Redis, poder ejecutar varios comandos de forma atómica, como si fuera uno solo, y que se ejecuten todos ellos o en caso de fallo en cualquiera de ellos, no se ejecute ninguno, para así poder garantizar la integridad de nuestra información, al igual que necesitaremos una gestión optimista de bloqueos

Redis – Búsqueda de Claves según sus Atributos

Un problema habitual al trabajar con Redis es cómo realizar una búsqueda sobre las claves en función de los atributos almacenados en su valor (Strings que almacenan JSON), de forma rápida y eficiente, especialmente sobre grandes colecciones de datos, algo que en Redis se puede resolver con diferentes técnicas, como Object Inspection, Faceted Search, y Hashed Keys, cada una de las cuales tiene unas implicaciones de rendimiento y almacenamiento