Almacen de datos
en memoria
Construido desde cero en Node.js puro, sin una sola dependencia externa. Protocolo RESP sobre TCP, Clean Architecture, TTL dual y un cliente REPL interactivo.
Que es Velo
Velo es un ejercicio practico de ingenieria de sistemas de bajo nivel en JavaScript. No existe para reemplazar ningun software en produccion — existe para demostrar que es posible construir desde cero, con Node.js nativo, un servidor de almacen de datos completamente funcional.
Se conecta por red usando TCP, habla el protocolo RESP (el mismo que usan los almacenes
de datos en memoria modernos), guarda los datos en estructuras Map con soporte de TTL,
y expone un cliente de linea de comandos interactivo tipo REPL.
@low-level-js/velo — licencia MIT.
Caracteristicas
net de Node.js. Soporta multiples conexiones simultaneas con un limite configurable.SELECT.Inicio rapido
Solo requiere Node.js >= 20. No hay npm install porque no existen dependencias.
Por defecto escucha en 127.0.0.1:6380. Configurable en el .env.
El REPL se conecta automaticamente al host y puerto configurados.
El servidor responde en milisegundos.
# Terminal 1 — servidor make server # Terminal 2 — cliente make client
velo 127.0.0.1:6380[0]> PING PONG velo 127.0.0.1:6380[0]> SET usuario "joel" EX 3600 OK velo 127.0.0.1:6380[0]> GET usuario "joel" velo 127.0.0.1:6380[0]> TTL usuario (integer) 3599 velo 127.0.0.1:6380[0]> INCR visitas (integer) 1 velo 127.0.0.1:6380[0]> MSET a 1 b 2 c 3 OK velo 127.0.0.1:6380[0]> MGET a b c z 1) "1" 2) "2" 3) "3" 4) (nil) velo 127.0.0.1:6380[0]> SELECT 1 OK velo 127.0.0.1:6380[1]> DBSIZE (integer) 0
Stack tecnico
Velo no tiene dependencias externas. Todo el stack usa exclusivamente la libreria estandar de Node.js.
| Modulo | Uso en Velo |
|---|---|
net | Servidor TCP y conexiones de cliente |
fs | Lectura del archivo .env con readFileSync |
readline | REPL interactivo del cliente con historial de 200 entradas |
events | Base EventEmitter del parser RESP |
path | Resolucion de rutas para localizar el .env |
url | fileURLToPath para obtener __dirname en ESM |
package.json tiene las secciones dependencies y devDependencies vacias.
No hay que correr npm install.