Backend desarrollado con NestJS que utiliza Redis para cachear datos de pokémons obtenidos de PokéAPI.
- ✅ Cache con Redis - Almacenamiento eficiente de datos
- ✅ HttpModule de NestJS - Peticiones HTTP optimizadas
- ✅ Búsqueda por prefijo - Coincidencias parciales desde el inicio del nombre
- ✅ Inicialización automática - Carga de datos al iniciar el servidor
- ✅ Arquitectura modular - Separación clara de responsabilidades
- Node.js (v18 o superior)
- Redis Server (v6 o superior)
# Instalar dependencias
npm install
# Configurar variables de entorno (opcional)
cp .env.example .env
# Iniciar Redis (en otra terminal)
redis-server
✅ 1. Instalar Redis
sudo apt update
sudo apt install redis-server -y
✅ 2. Verificar que Redis se haya instalado
redis-server --version
✅ 3. Habilitar y arrancar el servicio Redis
Esto asegura que Redis se inicie automáticamente al arrancar el sistema:
sudo systemctl enable redis
sudo systemctl start redis
✅ 4. Verificar que Redis esté corriendo
sudo systemctl status redis
# Iniciar la aplicación
npm run start:devLa implementación utiliza una estructura optimizada:
Claves principales:
pokemon:list- Conjunto ordenado (ZSET) con todos los pokémonspokemon:{id}- Hash individual para cada pokémon
Ventajas de esta estructura:
- Búsquedas eficientes por prefijo de nombre
- Acceso rápido por ID específico
- Memoria optimizada sin duplicación de datos
- Escalabilidad para grandes volúmenes de datos
GET /pokemon/search?name=bulba- Buscar pokémons por prefijoGET /pokemon/reload- Recargar datos desde PokéAPI
- Verificación Redis - Comprueba si existen datos cacheados
- Petición PokéAPI - Solo si no hay datos en cache
- Procesamiento - Extracción de ID desde URLs
- Almacenamiento - Estructura optimizada en Redis
- Listo - API preparada para búsquedas rápidas
# Buscar pokémons que empiecen con "char"
curl "http://localhost:3001/pokemon/search?name=char"
# Respuesta:
[
{ "id": 4, "name": "charmander" },
{ "id": 5, "name": "charmeleon" },
{ "id": 6, "name": "charizard" }
]