Bases de datos nosql

🔹 ¿Qué es Redis?
Redis (Remote Dictionary Server) es una base de datos clave-valor en memoria. Se usa principalmente para caché, sesiones de usuario y procesamiento en tiempo real.

🔹 Instalación y configuración
Para instalar Redis en Linux o Mac:

1sudo apt install redis-server  # Ubuntu
2brew install redis  # macOS

Para verificar que Redis está corriendo:

1redis-cli ping  # Devuelve "PONG" si está funcionando

🔹 Comandos básicos de Redis

1SET usuario:1 "Ana"  # Guarda "Ana" en la clave usuario:1
2GET usuario:1  # Devuelve "Ana"
3DEL usuario:1  # Elimina la clave usuario:1

Ejemplo práctico: Uso de Redis para almacenar sesiones de usuario

1SET sesion:1234 "{'usuario': 'Carlos', 'expira': '2025-03-07'}"
2GET sesion:1234

🔹 Uso de estructuras de datos avanzadas en Redis
Redis permite guardar más que solo cadenas de texto:

  • Listas (LPUSH, RPUSH, LPOP, RPOP)
  • Conjuntos (SADD, SREM, SMEMBERS)
  • Hashes (HSET, HGET, HGETALL)

Ejemplo: Contador de visitas

1INCR visitas:pagina  # Incrementa en 1
2GET visitas:pagina  # Devuelve el número actual de visitas

🔹 Persistencia en Redis
Redis puede guardar datos en disco para evitar perder información al reiniciar:

  • RDB (Snapshot) → Guarda copias completas en momentos específicos.
  • AOF (Append-Only File) → Guarda cada cambio en el tiempo real.

Para habilitar AOF:

1redis-cli config set appendonly yes

🔹 Clusterización y replicación en Redis
Redis permite distribuir datos en múltiples servidores para mayor rendimiento y seguridad. La replicación permite tener copias en servidores secundarios.


3.2. Memcached: Rápido y ligero

🔹 ¿Qué es Memcached?
Memcached es una base de datos clave-valor extremadamente rápida, utilizada para caché en aplicaciones web y reducción de carga en bases de datos.

🔹 Diferencias entre Redis y Memcached

CaracterísticaRedisMemcached
AlmacenamientoEn memoria (con opción a disco)Solo en memoria
Tipos de datosSoporta listas, hashes, conjuntosSolo cadenas
PersistenciaSí (RDB y AOF)No
ClusterizaciónNo

🔹 Instalación y uso de Memcached
Para instalar Memcached en Linux o Mac:

1sudo apt install memcached  # Ubuntu
2brew install memcached  # macOS

Para iniciar el servicio:

1memcached -d -m 64  # Inicia Memcached con 64 MB de memoria

🔹 Comandos básicos de Memcached

1set usuario:1 0 0 6  # Guarda "Carlos" en la clave usuario:1
2Carlos
3
4get usuario:1  # Devuelve "Carlos"
5delete usuario:1  # Elimina la clave usuario:1

🔹 Ejemplo de uso de Memcached en una aplicación web
Memcached se usa mucho para almacenar información de caché. Ejemplo en una API:

1️⃣ Primero, consulta Memcached:

1get datos:producto:123

2️⃣ Si los datos no están, consulta la base de datos y almacénalos en Memcached:

1set datos:producto:123 0 60 100
2"{'nombre': 'Laptop', 'precio': 1200}"

El 0 es un flag, el 60 es el tiempo de expiración (segundos) y el 100 es el tamaño de los datos.

🔹 Casos de uso de Memcached
✔ Caché de bases de datos
✔ Almacenamiento de sesiones
✔ Almacenamiento de datos temporales


3.3. Amazon DynamoDB: Escalabilidad en la nube

🔹 ¿Qué es DynamoDB?
DynamoDB es un servicio de bases de datos clave-valor en la nube de AWS. Está diseñado para manejar grandes volúmenes de datos con alta disponibilidad.

🔹 Características de DynamoDB
Totalmente gestionado (sin necesidad de instalar servidores).
Escala automáticamente según la demanda.
Compatible con estructuras clave-valor y documentos JSON.
Consistencia eventual o fuerte según la configuración.

🔹 Creación de una tabla en DynamoDB
Para crear una tabla en AWS:
1️⃣ Ir a la Consola de AWS
2️⃣ Seleccionar DynamoDB > Crear tabla
3️⃣ Definir una clave primaria (Ejemplo: id)
4️⃣ Configurar opciones de almacenamiento

🔹 Operaciones básicas en DynamoDB con AWS CLI

1# Insertar un dato
2aws dynamodb put-item --table-name Usuarios --item '{"id": {"S": "1"}, "nombre": {"S": "Ana"}}'
3
4# Obtener un dato
5aws dynamodb get-item --table-name Usuarios --key '{"id": {"S": "1"}}'

🔹 Índices secundarios y escalabilidad
DynamoDB permite crear índices secundarios para consultas más rápidas y escalables.

Ejemplo: Un índice para buscar usuarios por email en lugar de por ID.

🔹 Casos de uso de DynamoDB
✔ Aplicaciones móviles y web escalables
✔ Juegos en línea con almacenamiento rápido
✔ Sistemas de IoT con grandes volúmenes de datos