Guia de uso
Instalacion, configuracion y operacion de Velo paso a paso.
Requisitos del sistema
| Requisito | Version minima | Notas |
|---|---|---|
| Node.js | 20.0.0 | Se requiere soporte de ESM con import ... with { type: 'json' } (Node 22+) |
| npm | 9.0.0 | Solo para leer el package.json; no instala paquetes externos |
| make | Cualquiera | Opcional; el Makefile es solo un atajo. Puedes usar node directamente |
import pkg from 'file.json' with { type: 'json' } requiere Node.js 22.
En versiones anteriores puede usarse la sintaxis assert, pero esta depreciada.
Instalacion
No hay proceso de instalacion formal. Solo clonar y ejecutar.
# 1. Clonar el repositorio git clone https://github.com/low-level-js/velo cd velo # 2. Verificar la version de Node.js node --version # Debe mostrar v20.x.x o superior # 3. No hay npm install β cero dependencias externas
package.json tiene las secciones dependencies y devDependencies completamente vacias.
Velo usa exclusivamente la biblioteca estandar de Node.js.
Iniciar el servidor
El servidor TCP escucha conexiones entrantes y procesa comandos en formato RESP.
# Con Makefile make server # Directamente con node node src/server.js # Con variables de entorno personalizadas PORT=7000 LOG_LEVEL=debug node src/server.js # En modo watch (recarga automatica en desarrollo) make dev
Al arrancar, el servidor imprime en consola:
[velo] servidor iniciado en 127.0.0.1:6380 [velo] bases de datos: 16 | sweep: 1000ms | max conexiones: 100
Apagado limpio
Al recibir SIGTERM o SIGINT (Ctrl+C), el servidor cierra todas las conexiones activas y detiene el sweep antes de terminar.
Cliente REPL interactivo
El cliente abre una sesion interactiva tipo REPL directamente en la terminal.
# Con Makefile (usa HOST y PORT del .env) make client # Directamente con node node src/client.js # Conectar a un servidor remoto o con puerto personalizado node src/client.js 192.168.1.10 7000
Prompt dinamico
El prompt muestra el host, puerto y base de datos activa en tiempo real:
velo 127.0.0.1:6380[0]> β base de datos 0 velo 127.0.0.1:6380[0]> SELECT 3 OK velo 127.0.0.1:6380[3]> β cambio automatico a db 3
Colores por tipo de respuesta
| Color | Tipo de respuesta | Ejemplo |
|---|---|---|
| Verde | Simple String (exito) | OK, PONG |
| Cyan | Bulk String (valor) | "joel" |
| Amarillo | Integer | (integer) 42 |
| Gris | Nil (sin valor) | (nil) |
| Rojo | Error | (error) ERR ... |
Comandos locales
Estos comandos son procesados por el cliente y no se envian al servidor:
| Comando | Accion |
|---|---|
exit / quit | Cierra la conexion y termina el cliente |
clear | Limpia la pantalla de la terminal |
Historial
El cliente guarda hasta 200 entradas de historial. Navega con las teclas β y β.
Configuracion β archivo .env
Todas las opciones del servidor se configuran en el archivo .env en la raiz del proyecto.
HOST=127.0.0.1 PORT=6380 MAX_CONNECTIONS=100 LOG_LEVEL=info DB_COUNT=16 SWEEP_INTERVAL_MS=1000
| Variable | Defecto | Descripcion |
|---|---|---|
HOST | 127.0.0.1 |
Host en el que escucha el servidor TCP. Usa 0.0.0.0 para aceptar conexiones externas. |
PORT | 6380 |
Puerto TCP del servidor. Cambiarlo evita conflictos con otros servicios locales. |
MAX_CONNECTIONS | 100 |
Maximo de conexiones simultaneas. Las conexiones que superen el limite reciben un error y se cierran. |
LOG_LEVEL | info |
Nivel de verbosidad: debug (todo), info (normal), warn, error. |
DB_COUNT | 16 |
Numero de bases de datos disponibles. El indice va de 0 a DB_COUNT - 1. |
SWEEP_INTERVAL_MS | 1000 |
Intervalo en milisegundos del sweep de claves expiradas. Reducirlo libera memoria mas rapido a costa de CPU. |
Prioridad de configuracion
Las variables de entorno del sistema operativo tienen prioridad sobre el archivo .env:
# Esta variable sobreescribe lo que diga el .env PORT=7000 LOG_LEVEL=debug node src/server.js
Makefile β comandos de desarrollo
| Comando | Descripcion |
|---|---|
make server | Inicia el servidor TCP con la configuracion del .env |
make client | Abre el cliente REPL interactivo |
make dev | Inicia el servidor con recarga automatica al guardar (--watch) |
make install | Verifica la version de Node.js instalada |
make clean | Elimina archivos temporales y logs generados |
make info | Muestra la configuracion activa leida desde el .env |
.env usando include .env con export, por lo que todos los comandos heredan la configuracion sin necesidad de repetirla.
Conectar con netcat o telnet
Velo soporta texto plano (inline) ademas del protocolo RESP, lo que permite probarlo con herramientas de red estandar sin el cliente REPL:
# Usando netcat (nc) echo -e "PING\r" | nc 127.0.0.1 6380 # Sesion interactiva nc 127.0.0.1 6380 PING +PONG SET nombre joel EX 60 +OK GET nombre $4 joel