Bundis – servidor compatible con Redis basado en SQLite para Bun.RedisClient
(github.com/Munsunty)Es un proyecto para cuando necesitas una API estilo Redis y pub/sub en una app de Bun, pero no quieres operar un servidor Redis aparte.
Si simplemente apuntas la URL de conexión del Bun.RedisClient original a este servidor, funciona tal cual sin modificar el código. No requiere instalar Redis ni dependencias nativas. Los datos se persisten en un archivo SQLite (WAL), por lo que siguen ahí después de reiniciar, y las lecturas se aceleran con una caché caliente en memoria.
Puntos clave
- 0 dependencias —
bun:sqliteyBun.listenya vienen integrados en Bun. No hace falta instalar nada aparte - Persistencia — los datos se guardan en un único archivo SQLite y sobreviven a los reinicios
- Arranque en frío de ~13 ms — sin importar el tamaño de los datos (a diferencia de Redis, no hay reproducción de datos al iniciar como con RDB/AOF)
- Caché caliente —
write-through+ expulsión adaptativa por inactividad + límite LRU por bytes. La caché acelera solo las lecturas y SQLite sigue siendo la fuente de verdad - 3 formas de ejecución — embebido dentro del proceso / sidecar con
spawn/ demonio independiente (bunx)
Ejemplo de uso
import { RedisClient } from "bun";
import { embedServer } from "bundis";
const server = embedServer({ dbPath: "./data.db" });
const client = new RedisClient(server.url);
await client.set("k", "v");
Lo que claramente no busca ser
- No es compatible con runtimes fuera de Bun (Node.js/Deno, etc.) ni con clientes distintos de
Bun.RedisClient(ioredis,node-redis,redis-py, etc.). Lo que se garantiza es el contrato a nivel wire ("si entran los bytes correctos, responde con los bytes correctos") - Redis Cluster/Sentinel, compartir un
.dbentre múltiples procesos, HA/failover quedan fuera del alcance (se asume un único writer) - El scripting con Lua (
EVAL) y la familia de comandos de listas/sorted set aún no están implementados (está planeado)
El objetivo es la compatibilidad de interfaz, no clonar el rendimiento de Redis. Redis sigue teniendo ventaja en throughput; lo que vende Bundis es la comodidad operativa de tener "persistencia en disco + API de Redis en Bun sin instalar Redis". Las cifras de rendimiento son benchmarks de la ruta compatible medidos con Bun.RedisClient real sobre TCP loopback, y la metodología junto con las cifras before/after están publicadas en PERFORMANCE.md del repositorio.
GitHub: https://github.com/Munsunty/bundis
Instalación: bun add bundis
Aún no hay comentarios.