0% encontró este documento útil (0 votos)
12 vistas8 páginas

leccion 3- Redis

REDIS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas8 páginas

leccion 3- Redis

REDIS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Tutorial de apirest con Redis repo:

https://github.com/arlemorales23/ApiRest.git
1. ¿Qué es Redis?

Redis (Remote Dictionary Server) es una base de datos NoSQL de código abierto, en memoria,
que funciona como un almacén de estructura de datos. Se caracteriza por su velocidad
extremadamente alta y su versatilidad.

Tipo de base de datos

Redis es una base de datos NoSQL de tipo clave-valor. Esto significa que los datos se almacenan
como pares de clave-valor, donde cada clave es única y se utiliza para acceder a su valor asociado.

Ventajas de Redis

1. Velocidad: Al operar principalmente en memoria, Redis ofrece tiempos de respuesta


extremadamente rápidos, generalmente por debajo del milisegundo.
2. Versatilidad: Soporta varios tipos de datos como cadenas, hashes, listas, conjuntos, conjuntos
ordenados, bitmaps, hyperlogLog y más.
3. Persistencia: Aunque opera en memoria, Redis puede guardar datos en disco para su
recuperación.
4. Replicación: Permite configurar réplicas maestro-esclavo para alta disponibilidad.
5. Particionamiento: Puede distribuir datos entre múltiples instancias de Redis.
6. Transacciones: Soporta operaciones atómicas en múltiples claves.
7. Pub/Sub: Implementa un sistema de mensajería para comunicación entre procesos.
8. Scripting: Permite ejecutar scripts Lua en el servidor.

Casos de uso

Redis se puede utilizar en una variedad de escenarios, incluyendo:

1. Caché: Almacenamiento en caché de datos frecuentemente accedidos para mejorar el


rendimiento de aplicaciones.
2. Sesiones de usuario: Almacenamiento de datos de sesión para aplicaciones web.
3. Colas de mensajes: Implementación de sistemas de colas para procesamiento de tareas en
segundo plano.
4. Contadores en tiempo real: Para análisis y estadísticas en tiempo real.
5. Clasificaciones y leaderboards: Para juegos o aplicaciones que requieren clasificaciones
actualizadas constantemente.
6. Geolocalización: Almacenamiento y consulta de datos geoespaciales.

Crear una cuenta en Redis


Esta es la interface de usuario:

2. Node.js:
Definición: Es un entorno de ejecución para JavaScript del lado del servidor, que permite ejecutar
código JavaScript fuera del navegador.

Analogía: Piensa en Node.js como conductor de carro que permite que JavaScript, que
tradicionalmente solo "conducía" dentro del navegador (como un carro en la ciudad), pueda también
circular por otras partes, como una carretera fuera de la ciudad (el servidor).

3. Express:
Definición: Es un marco de trabajo minimalista para crear aplicaciones web con Node.js. Ayuda a
gestionar rutas, peticiones HTTP, respuestas y middleware de manera más sencilla.

Analogía: Express sería el plano para construir una autopista eficiente. Organiza los carriles (rutas) y
los semáforos (peticiones y respuestas) para que el tráfico de información fluya correctamente.

4. HTTP (Hypertext Transfer Protocol)

Definicion: Es el protocolo que permite la comunicación entre los navegadores web y los servidores.
Es el conjunto de reglas que define cómo se deben formatear, transmitir y responder las solicitudes y
respuestas que se intercambian a través de la web.

¿Cómo funciona HTTP?

HTTP es un protocolo sin estado (stateless), lo que significa que cada petición entre el cliente
(navegador) y el servidor es independiente, y el servidor no recuerda las interacciones previas.
Aunque hoy en día, tecnologías como las cookies y sesiones permiten mantener cierto estado entre
varias peticiones.
Tipos de peticiones HTTP

Cada vez que un cliente (como un navegador) quiere interactuar con un servidor, envía una petición
HTTP. Estas peticiones pueden ser de diferentes tipos, dependiendo de la acción que el cliente
desea realizar:

1. GET:
o Descripción: Solicita datos del servidor. Se usa para obtener información sin modificar
nada en el servidor.
o Ejemplo: Cuando visitas una página web, el navegador realiza una petición GET para
obtener el contenido de esa página.
o Analogía: Es como leer un periódico en línea. No estás modificando nada, solo
accediendo a la información.

2. POST:
o Descripción: Envía datos al servidor, generalmente para crear o procesar información.
Se utiliza en formularios o al subir archivos.
o Ejemplo: Cuando llenas un formulario de contacto o de registro, el navegador envía los
datos con una petición POST.
o Analogía: Es como enviar una carta por correo; envías información que el destinatario
(servidor) debe procesar.
3. PUT:
o Descripción: Actualiza o reemplaza un recurso existente en el servidor con los datos
proporcionados.
o Ejemplo: Cuando actualizas tu perfil en una red social, se podría usar una petición
PUT para reemplazar tu información antigua con la nueva.
o Analogía: Es como reemplazar el contenido de un archivo que ya existe en tu
computadora con nueva información.
4. PATCH:
o Descripción: Similar a PUT, pero en lugar de reemplazar todo el recurso, solo modifica
partes específicas de él.
o Ejemplo: Actualizar solo el campo "nombre" en tu perfil de usuario, sin tocar otros
datos.
o Analogía: Es como corregir una página de un libro con un marcador, en lugar de
reescribir todo el capítulo.
5. DELETE:
o Descripción: Elimina un recurso existente en el servidor.
o Ejemplo: Cuando eliminas una publicación o archivo de un servicio web.
o Analogía: Es como tirar un archivo a la papelera de reciclaje.
6. HEAD:
o Descripción: Solicita el encabezado de una página sin obtener el cuerpo del
contenido. Es útil para verificar si un recurso está disponible o para obtener metadatos.
o Ejemplo: Un buscador web podría usar una petición HEAD para comprobar si una
página ha sido actualizada sin descargar todo el contenido.
o Analogía: Es como mirar la portada de un libro para ver si es nuevo, sin abrirlo para
leerlo.
7. OPTIONS:
o Descripción: Solicita información sobre las opciones de comunicación permitidas para
un recurso, como los métodos HTTP soportados por el servidor.
Ejemplo: Un servidor podría responder a una solicitud OPTIONS indicando que
o
soporta GET, POST y DELETE, pero no PUT o PATCH.
o Analogía: Es como preguntar a un restaurante qué platos tienen disponibles antes de
hacer un pedido.
8. CONNECT:
o Descripción: Se utiliza para crear un túnel de comunicación entre el cliente y el
servidor. Se suele usar con HTTPS para establecer conexiones seguras.
o Ejemplo: Un navegador puede usar CONNECT al conectarse a un servidor web seguro
mediante SSL.
o Analogía: Es como crear una línea directa de comunicación segura entre dos
personas.
9. TRACE:
o Descripción: Sirve para probar y diagnosticar el camino que sigue una solicitud hasta
el servidor, reflejando el contenido de la solicitud en la respuesta.
o Ejemplo: Es poco común y se usa principalmente para depuración.
o Analogía: Es como un eco que devuelve la misma información que enviaste, solo para
comprobar que llegó correctamente.

5. Middleware

Es una función intermedia que se ejecuta durante el ciclo de vida de una solicitud HTTP, antes de
que la respuesta final llegue al cliente. Su propósito es procesar la solicitud de alguna manera antes
de pasarla a la siguiente capa, que puede ser otro middleware o el manejador final que genera la
respuesta.

Analogía

Imagina que tienes una fábrica de coches. El coche (solicitud) pasa por diferentes estaciones
(middlewares), donde se le realizan ajustes o inspecciones antes de ser entregado al cliente
(respuesta). Cada estación puede:

• Modificar el coche (agregar o quitar datos a la solicitud).


• Realizar una verificación (autenticación, validaciones).
• Decidir si el coche sigue adelante o no (permitir o bloquear la solicitud).

Ejemplo en Express

En Express, puedes tener middleware para diferentes propósitos, como:

• Autenticación: Verificar si el usuario tiene permiso para acceder.


• Procesar datos: Analizar el cuerpo de una solicitud (ej. JSON, formularios).
• Registro de logs: Guardar información sobre la solicitud (quién, cuándo, qué).

6 Gestor de dependencias:
Definición: Es una herramienta que facilita la instalación, actualización y manejo de las bibliotecas
externas (dependencias) que tu proyecto necesita.
Analogía: Imagina que tienes una cocina (tu proyecto) y necesitas diferentes ingredientes
(dependencias) para preparar un platillo. El gestor de dependencias sería el supermercado donde
vas a buscar esos ingredientes, siempre con versiones actualizadas y listas para usar.

Tipos de gestores de dependencias en Node.js:


Los más comunes son:

• npm (Node Package Manager): El gestor oficial de Node.js, es como un supermercado


central.
• Yarn: Una alternativa más rápida en algunos casos, que te ayuda a instalar dependencias
como en un supermercado express, optimizando el tiempo de compra.
• pnpm: Un gestor que optimiza el uso de espacio al compartir paquetes comunes entre
proyectos, como si estuvieras usando una despensa compartida.

7. ORM (Object-Relational Mapping):


Definición: Es una técnica para interactuar con bases de datos relacionales desde el código,
mapeando las tablas a objetos en el lenguaje de programación.
Analogía: Imagina que tu base de datos es una gran hoja de cálculo (tablas), y un ORM es una
herramienta que convierte esa información en objetos que puedes manipular fácilmente en tu código,
como si transformaras celdas en pequeños autos con los que puedes interactuar en una ciudad (tu
aplicación).

Tipos de ORM en JavaScript:

• Sequelize: Un ORM que trabaja con varias bases de datos como PostgreSQL, MySQL,
SQLite, etc. Es como un traductor que te permite comunicarte en varios lenguajes (bases de
datos) usando el mismo idioma (JavaScript).
• TypeORM: Similar a Sequelize, pero está más enfocado en el uso de TypeScript, con
características avanzadas para aplicaciones complejas. Es como un traductor que también
revisa la gramática mientras traduce.
• Mongoose: Un ORM específicamente diseñado para bases de datos no relacionales como
MongoDB. Es como un traductor especializado en un solo idioma, pero que funciona muy bien
en su campo.

8. Creación de Apirest
Estructura del proyecto:
Instalar las dependencias:

npm install express mysql2 redis helmet dotenv jsonwebtoken bcrypt && npm install nodemon
--save-dev

Este comando instalará todas las dependencias necesarias para el proyecto. Vamos a desglosarlo:

1. Dependencias principales:
o express: Framework web para Node.js

o mysql2: Driver de MySQL para Node.js

o redis: Cliente de Redis para Node.js

o helmet: Middleware de seguridad para Express

o dotenv: Para cargar variables de entorno

o jsonwebtoken: Para generar y verificar tokens JWT

o bcrypt: Para hash de contraseñas

2. Dependencia de desarrollo:
o nodemon: Utilidad que monitorea cambios en los archivos y reinicia automáticamente el
servidor (instalada como dependencia de desarrollo con --save-dev)

Después de ejecutar este comando, npm instalará todas estas dependencias y las añadirá al archivo
package.json.

Como probar:
• Preparación:

• Asegúrate de que tu servidor Node.js esté en funcionamiento. Ejecuta npm start en la terminal desde el
directorio de tu proyecto.
• Verifica que la base de datos MySQL esté activa y configurada correctamente.
• Asegúrate de que la conexión a Redis Cloud esté establecida.


• Crear un nuevo usuario:

• Selecciona la solicitud "Crear Usuario".


• Verifica que la URL sea http://localhost:3000/api/usuarios (ajusta el puerto si es diferente).
• En la pestaña "Body", selecciona "raw" y "JSON".
• Introduce los datos del usuario en formato JSON:

{
"nombre": "Juan Pérez",
"email": "[email protected]",
"password": "contraseña123"
}
• Haz clic en "Send".
• Deberías recibir una respuesta con el ID del usuario creado.

Obtener el token:

• Obtener un usuario:

• Selecciona la solicitud "Obtener Usuario".


• Ajusta la URL para incluir el ID del usuario creado, por ejemplo:
http://localhost:3000/api/usuarios/1.
• En la pestaña "Headers", asegúrate de incluir el token de autorización:

Key: Authorization
Value: Bearer [tu_token_jwt]

• Haz clic en "Send".


• Deberías recibir los datos del usuario.
Data almacenada en Redis:

También podría gustarte