Lux Docs
Zapdb

Go API

Core database operations for ZapDB

Opening a Database

opts := badger.DefaultOptions("/path/to/data")
db, err := badger.Open(opts)
if err != nil {
    log.Fatal(err)
}
defer db.Close()

Transactions

All reads and writes happen inside transactions. ZapDB supports both read-only and read-write transactions.

Read-Write Transaction

err := db.Update(func(txn *badger.Txn) error {
    err := txn.Set([]byte("key"), []byte("value"))
    return err
})

Read-Only Transaction

err := db.View(func(txn *badger.Txn) error {
    item, err := txn.Get([]byte("key"))
    if err != nil {
        return err
    }
    return item.Value(func(val []byte) error {
        // use val
        return nil
    })
})

Manual Transactions

txn := db.NewTransaction(true) // true = read-write
defer txn.Discard()

txn.Set([]byte("key"), []byte("value"))
txn.Delete([]byte("old-key"))

err := txn.Commit()

Key Operations

MethodDescription
txn.Set(key, val)Set a key-value pair
txn.Get(key)Get an item by key (returns ErrKeyNotFound if missing)
txn.Delete(key)Delete a key
txn.SetEntry(e)Set with TTL or metadata via badger.NewEntry(key, val).WithTTL(dur)

Iteration

err := db.View(func(txn *badger.Txn) error {
    opts := badger.DefaultIteratorOptions
    opts.Prefix = []byte("user:")
    it := txn.NewIterator(opts)
    defer it.Close()

    for it.Rewind(); it.Valid(); it.Next() {
        item := it.Item()
        // process item
    }
    return nil
})

Set opts.PrefetchValues = false for key-only iteration (faster when values are not needed).

Batch Writes

wb := db.NewWriteBatch()
defer wb.Cancel()

for i := 0; i < 1000; i++ {
    wb.Set(key(i), value(i))
}
err := wb.Flush()

Database Management

MethodDescription
db.Sync()Force fsync to disk
db.Flatten(workers)Compact the LSM tree
db.DropAll()Delete all keys
db.DropPrefix(prefix...)Delete all keys with given prefixes
db.Backup(w, since)Stream backup to an io.Writer
db.Load(r, maxPending)Restore from backup stream
db.Subscribe(ctx, cb, matches)Watch for key changes

On this page