1 pontos por oakhex 4 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp

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:sqlite e Bun.listen já 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-py etc.). 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 .db entre 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.

Ainda não há comentários.