Bases de datos nosql
4.1. Uso en caché de datos (Ejemplo con Redis y Memcached)
🔹 ¿Qué es un caché?
Un caché es un sistema que almacena temporalmente datos para que las consultas sean más rápidas. En lugar de acceder a una base de datos lenta, recuperamos los datos del caché, que es mucho más rápido.
📌 Ejemplo: Caché en una API con Redis
Imagina que tenemos una API que devuelve información de un producto. Sin caché, cada vez que alguien consulta el producto, la API debe buscar en la base de datos, lo que puede ser lento.
1️⃣ Primero, buscamos en Redis:
1GET producto:123
Si Redis tiene los datos, los devolvemos directamente. ✅
2️⃣ Si los datos NO están en Redis, consultamos la base de datos y los guardamos en Redis para la próxima vez:
1SET producto:123 "{'nombre': 'Laptop', 'precio': 1200}" EX 60
📌 Aquí, EX 60 significa que los datos expiran en 60 segundos. Después de ese tiempo, Redis eliminará la clave automáticamente.
4.2. Sesiones en aplicaciones web
🔹 ¿Qué es una sesión de usuario?
Cuando un usuario inicia sesión en un sitio web, la aplicación debe recordar quién es. En lugar de guardar los datos en la base de datos en cada solicitud, podemos usar una base clave-valor para hacerlo más rápido.
📌 Ejemplo: Guardar una sesión de usuario en Redis
Cuando un usuario inicia sesión, guardamos su información en Redis:
1SET sesion:5678 "{'usuario': 'Carlos', 'expira': '2025-03-07'}" EX 3600
Aquí, EX 3600 significa que la sesión expirará en 1 hora.
Cuando el usuario vuelve a la web, recuperamos sus datos desde Redis:
1GET sesion:5678
Si Redis devuelve un resultado, el usuario sigue autenticado. Si no, la sesión ha expirado y deberá iniciar sesión de nuevo.
💡 ¿Por qué usar Redis en sesiones?
✔ Rápido: La información se obtiene en milisegundos.
✔ Escalable: Se puede usar en múltiples servidores.
✔ Seguro: Se puede configurar para que los datos expiren automáticamente.
4.3. Implementación de una cola de mensajes
🔹 ¿Qué es una cola de mensajes?
Una cola de mensajes es un sistema que permite a los procesos comunicarse de manera eficiente. En lugar de hacer todo al mismo tiempo, las tareas se colocan en una cola y se procesan una por una.
Ejemplo:
📩 Un usuario sube una imagen a una web. En lugar de procesar la imagen inmediatamente (lo que puede ser lento), la aplicación la coloca en una cola y un sistema la procesa después.
📌 Ejemplo: Cola de tareas en Redis con listas
Para agregar una tarea a la cola:
1LPUSH tareas "procesar_imagen_123.jpg"
Para tomar una tarea de la cola y procesarla:
1RPOP tareas
💡 ¿Por qué usar Redis en colas de mensajes?
✔ Maneja grandes volúmenes de tareas sin perder datos.
✔ Se integra fácilmente con otras aplicaciones.
✔ Es rápido y eficiente.
4.4. Manejo de contadores y estadísticas
🔹 ¿Qué es un contador?
Un contador es una variable que aumenta o disminuye según ciertos eventos. Se usa mucho en sistemas como contadores de visitas, likes o descargas.
📌 Ejemplo: Contador de visitas con Redis
Cada vez que alguien entra a una página, incrementamos el contador:
1INCR visitas:paginaprincipal
Si queremos ver cuántas visitas ha tenido la página:
1GET visitas:paginaprincipal
Si queremos restablecer el contador:
1DEL visitas:paginaprincipal
💡 ¿Por qué usar Redis para contadores?
✔ Redis maneja incrementos de forma eficiente sin bloqueos.
✔ Los datos pueden almacenarse en memoria y persistir.
✔ Es ideal para sitios con mucho tráfico.
4.5. Gestión de autenticación y tokens (JWT + Redis)
🔹 ¿Cómo funciona la autenticación con Redis?
1️⃣ Un usuario inicia sesión.
2️⃣ El servidor genera un token de autenticación (JWT).
3️⃣ El token se guarda en Redis con un tiempo de expiración.
4️⃣ En cada solicitud, Redis verifica si el token es válido.
📌 Ejemplo: Guardar un token en Redis
1SET token:abcd1234 "{'usuario': 'Ana'}" EX 3600
Esto guarda el token abcd1234 por una hora.
📌 Ejemplo: Validar un token en Redis
Cuando el usuario hace una petición, el servidor consulta Redis:
1GET token:abcd1234
Si Redis devuelve información, el token es válido. Si no, el usuario debe iniciar sesión nuevamente.
💡 ¿Por qué usar Redis para autenticación?
✔ Rápido: Las consultas se resuelven en milisegundos.
✔ Seguro: Los tokens pueden expirar automáticamente.
✔ Escalable: Se puede usar en múltiples servidores.