UsemiDB, Node.js projeleri için hafif, hızlı ve JSON tabanlı bir key-value database sistemidir. TTL (zaman aşımı), otomatik yedekleme, event sistemi, gelişmiş matematiksel işlemler ve collection desteği ile basit ama güçlü bir veri yönetim kütüphanesidir.
- Key-Value Store: Basit
set,get,delete,has,pushmetodları. - Matematiksel İşlemler:
add,subtractile tek satırda bakiye yönetimi. - Akıllı Liste Yönetimi:
pushile ekle,pullile listeden veri sil. - Toggle & Rename: Boolean değerleri tersine çevirme ve anahtar adı değiştirme.
- Performans:
writeDelayile disk yazma işlemleri optimize edilmiştir (Debounce). - TTL Desteği: Her veri için süreli (expiration) kayıt imkanı.
- Otomatik Temizleme: TTL süresi dolan veriler otomatik olarak silinir.
- Event Sistemi:
set,delete,push,expired,clearverenameeventleri. - Yedekleme: DB dosyası bozulursa
.bakyedeğiyle otomatik kurtarma. - Collections: Verileri gruplamak için gelişmiş namespace desteği.
JavaScript
const UsemiDB = require("usemidb");
const db = new UsemiDB({
filePath: "./database/data.json", // Kayıt dosyası
autoSave: true, // Otomatik kaydetme
writeDelay: 100, // Performans için yazma gecikmesi (ms)
autoCleanInterval: 60000 // TTL temizleme aralığı (ms)
});
(async () => {
// 🟢 Basit Veri Kaydı (TTL: 10 saniye)
await db.set("user_1", { name: "Lorely" }, 10000);
const user = db.get("user_1");
console.log(user); // { name: "Lorely" }
// 🟢 Matematiksel İşlemler (Para/XP Sistemi)
await db.set("bakiye", 100);
await db.add("bakiye", 50); // 150 olur
await db.subtract("bakiye", 20); // 130 olur
console.log(db.get("bakiye")); // 130
// 🟢 Liste (Array) İşlemleri
await db.push("etiketler", "javascript");
await db.push("etiketler", "nodejs");
await db.push("etiketler", "python");
// Listeden eleman silme (pull)
await db.pull("etiketler", "python");
console.log(db.get("etiketler")); // ["javascript", "nodejs"]
// 🟢 Rastgele Veri Çekme (Random)
// Çekilişler veya rastgele eşya sistemleri için idealdir.
const randomUser = await db.random();
console.log(randomUser); // Tek bir rastgele değer döner.
const luckyWinners = await db.random(3);
console.log(luckyWinners); // Rastgele 3 değerden oluşan bir liste döner.
// 🟢 Toggle (Aç/Kapat)
// "bakim_modu" yoksa oluşturur ve true yapar, varsa tersine çevirir.
await db.toggle("bakim_modu");
console.log(db.get("bakim_modu")); // true
// 🟢 Rename (Anahtar Adı Değiştirme)
await db.rename("user_1", "admin_1");
console.log(db.get("admin_1")); // { name: "Lorely" }
})();Verilerinizi kategorize etmek (örn: kullanıcılar, sunucular, ayarlar) için collection sistemini kullanabilirsiniz.
JavaScript
// "users" adında bir koleksiyon oluştur
const users = db.collection("users");
// Veriler otomatik olarak "users:ahmet" şeklinde saklanır
await users.set("ahmet", { age: 25 });
// Koleksiyona özel matematik işlemi
await users.add("ahmet_para", 500);
// Sadece bu koleksiyondaki verileri çek
console.log(users.all()); Veritabanında gerçekleşen değişiklikleri dinleyebilirsiniz.
JavaScript
db.on("set", (key, value) => {
console.log(`[KAYIT] ${key} eklendi:`, value);
});
db.on("expired", (key) => {
console.log(`[SİLİNDİ] ${key} süresi doldu.`);
});
db.on("rename", (oldKey, newKey) => {
console.log(`[DEĞİŞTİ] ${oldKey} -> ${newKey} oldu.`);
});JavaScript
console.log(db.stats());
/* Çıktı:
{
totalKeys: 15,
keysWithTTL: 2,
expiredCount: 0,
fileSize: 1024,
memSize: 512,
uptimeMs: 5200
}
*/npm install usemidb