Bundis – servidor compatível com Redis baseado em SQLite para Bun.RedisClient
(github.com/Munsunty)Um projeto para quando você precisa de uma API no estilo Redis e pub/sub em apps Bun, mas não quer operar um servidor Redis separado.
Basta apontar a URL de conexão do Bun.RedisClient padrão para este servidor, e ele funciona diretamente, sem modificar o código. Não há instalação de Redis nem dependências nativas. Os dados são persistidos em um arquivo SQLite (WAL), sobrevivendo a reinicializações, e as leituras são aceleradas com um hot cache em memória.
Principais pontos
- Zero dependências —
bun:sqliteeBun.listenjá vêm embutidos no Bun. Não é necessário instalar nada extra - Persistência — os dados são armazenados em um único arquivo SQLite e sobrevivem após reinicializações
- Cold start de ~13ms — independente do tamanho dos dados (ao contrário da reprodução de RDB/AOF do Redis, não há replay de dados na inicialização)
- Hot cache — write-through + eviction adaptativa por ociosidade + limite de bytes com LRU. O cache acelera apenas leituras, e o SQLite é sempre a fonte da verdade
- 3 formas de execução — embed no processo / spawn como sidecar / daemon independente (
bunx)
Exemplo 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");
O que explicitamente não é objetivo
- Não oferece suporte a runtimes fora do Bun (Node.js/Deno etc.) nem a clientes além do Bun.RedisClient (
ioredis,node-redis,redis-pyetc.). O alvo de garantia é o contrato de wire ("se os bytes corretos entrarem, a resposta virá com os bytes corretos") - Redis Cluster/Sentinel, compartilhamento de
.dbentre múltiplos processos, HA/failover estão fora do escopo (assume writer único) - Scripting Lua (
EVAL), família de comandos de list/sorted-set ainda não estão implementados (planejado)
O objetivo é compatibilidade de interface, não um clone de desempenho do Redis. Em throughput, o Redis leva vantagem; o que o Bundis vende é a conveniência operacional de "persistência em disco + API Redis no Bun sem instalar Redis". Os números de desempenho são benchmarks do caminho compatível medidos com o Bun.RedisClient real via TCP loopback, e a metodologia junto com os números before/after estão publicados no PERFORMANCE.md do repositório.
GitHub: https://github.com/Munsunty/bundis
Instalação: bun add bundis
Ainda não há comentários.