Bundis – Bun.RedisClient için SQLite tabanlı Redis uyumlu sunucu
(github.com/Munsunty)Bun uygulamalarında Redis tarzı API ve pub/sub gerektiğinde ama ayrı bir Redis sunucusu işletmek istemediğiniz durumlar için bir proje.
Sadece standart Bun.RedisClient bağlantı URL’sini bu sunucuya yönlendirmeniz yeterli; kodu değiştirmeden olduğu gibi çalışır. Redis kurulumu da yok, native bağımlılık da yok. Veriler SQLite dosyasında (WAL) kalıcı olarak saklanır ve yeniden başlatma sonrasında da yaşamaya devam eder; okumalar ise bellek içi hot cache ile hızlandırılır.
Temel noktalar
- 0 bağımlılık —
bun:sqlite,Bun.listentamamen Bun yerleşik özellikleri. Ayrı kurulum gerekmez - Kalıcılık — veriler tek bir SQLite dosyasında saklanır, yeniden başlatma sonrası korunur
- Cold start ~13ms — veri boyutundan bağımsızdır (Redis’in RDB/AOF yeniden oynatmasından farklı olarak açılışta veri replay yoktur)
- Hot cache — write-through + uyarlamalı idle eviction + LRU byte üst sınırı. Cache yalnızca okuma hızlandırması içindir; asıl gerçek kaynak her zaman SQLite’tır
- 3 çalışma biçimi — süreç içi embed / sidecar spawn / bağımsız daemon (
bunx)
Kullanım örneği
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");
Açıkça hedeflenmeyenler
- Bun dışındaki runtime’lar (Node.js/Deno vb.) ve Bun.RedisClient dışındaki istemciler (
ioredis,node-redis,redis-pyvb.) desteklenmez. Güvence kapsamı wire contract’tır ("doğru baytlar gelirse doğru baytlarla yanıt verir") - Redis Cluster/Sentinel, çoklu süreçlerin
.dbpaylaşması, HA/failover kapsam dışıdır (tek writer varsayımı) - Lua scripting (
EVAL), list/sorted-set komut grupları henüz uygulanmadı (planlanıyor)
Amaç arayüz uyumluluğudur, Redis performansının bir klonunu yapmak değil. Throughput tarafında Redis üstündür; Bundis’in sunduğu değer ise "Redis kurmadan Bun içinde disk kalıcılığı + Redis API" şeklindeki operasyonel kolaylıktır. Performans rakamları, gerçek Bun.RedisClient ile loopback TCP üzerinden ölçülen uyumluluk yolu benchmark’larıdır; metodoloji ile before/after değerleri depodaki PERFORMANCE.md içinde açıkça paylaşılmıştır.
GitHub: https://github.com/Munsunty/bundis
Kurulum: bun add bundis
Henüz yorum yok.