- Conceptos
- Redis
- PostgreSQL
- Express.js
- Código de Ejemplo
- 1. Instalación
- 2. Configuración de PostgreSQL
- 3. Configuración de Express
- 4. Middleware de cache
- 5. Rutas de Express
- Recursos
En este tutorial, aprenderás a usar Redis como cache para minimizar las consultas directas a una base de datos PostgreSQL utilizando el framework Express.js. Redis es una base de datos en memoria que puede mejorar significativamente el rendimiento de tu aplicación.
Conceptos
Redis
Redis es una base de datos en memoria, conocida por su alto rendimiento. Se utiliza principalmente para almacenamiento en caché y para la gestión de datos temporales debido a su capacidad de ofrecer acceso rápido a los datos almacenados.
PostgreSQL
PostgreSQL es un sistema de gestión de bases de datos relacional y open-source. Es conocido por su robustez, escalabilidad y soporte para complejas y avanzadas consultas SQL.
Express.js
Express.js es un framework de aplicaciones web para Node.js, diseñado para simplificar la construcción de aplicaciones y API web. Ofrece un conjunto mínimo de funcionalidades web y permite integrar middleware para manejar solicitudes HTTP, rutas y vistas.
Código de Ejemplo
1. Instalación
Primero, asegúrate de tener instalados Node.js, PostgreSQL y Redis en tu sistema. Luego, crea un nuevo proyecto en Node.js e instala las dependencias necesarias.
mkdir redis-cache-demo
cd redis-cache-demo
npm init -y
npm install express pg redis
2. Configuración de PostgreSQL
A continuación, crea una tabla simple en PostgreSQL llamada `users`.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO users (name, email) VALUES
('John Doe', '[email protected]'),
('Jane Doe', '[email protected]');
3. Configuración de Express
Crea el archivo index.js y configura la conexión a PostgreSQL y Redis.
const express = require('express');
const { Pool } = require('pg');
const redis = require('redis');
const app = express();
const port = 3000;
const pool = new Pool({
user: 'tu_usuario',
host: 'localhost',
database: 'tu_base_de_datos',
password: 'tu_contraseña',
port: 5432,
});
const redisClient = redis.createClient();
redisClient.connect();
4. Middleware de cache
Crea un middleware para recuperar los datos del cache de Redis antes de consultar la base de datos.
const cacheMiddleware = async (req, res, next) => {
const { id } = req.params;
// consultamos en redis si ya existe ese ID
const data = await redisClient.get(id);
// Si existe la información de ese ID la retornamos
if (data) {
return res.json(JSON.parse(data));
}
// Si no existe continuamos
next();
};
5. Rutas de Express
Configura una ruta para obtener un usuario por su ID, utilizando el middleware de cache y almacenando los resultados en Redis.
app.get('/user/:id', cacheMiddleware, async (req, res) => {
const { id } = req.params;
const result = await pool.query('SELECT * FROM users WHERE id = $1', [id]);
const user = result.rows[0];
if (user) {
// Guardamos en redis la información de ese ID
await redisClient.set(id, JSON.stringify(user));
}
res.json(user);
});
app.listen(port, () => {
console.log(`Servidor corriendo en http://localhost:${port}`);
});
Con estos pasos, has implementado con éxito Redis como cache en una aplicación de Express.js que utiliza PostgreSQL como base de datos. Esto ayuda a reducir la carga en la base de datos y mejora el rendimiento general de la aplicación. El ejemplo de este tutorial te da las bases para mejorar tus proyectos implementando un sistema de cache en memoria a las peticiones.
Recursos


