Skip to main content
Version: 1.5.1

badger

Embedded Storebackend/badger

BadgerDB is a fast, embedded key-value database written in Go. It's designed for high-performance read and write operations with built-in caching and efficient memory usage.

📦 Installation

go get github.com/azrod/kivigo/backend/badger

BadgerDB is an embedded database that stores data locally in files. No external services are required.

Dependencies

  • No external services required
  • Disk space for data storage
  • File system write permissions

✨ Features

Basic Operations
Batch Operations
Health Checks
Persistence
ACID Transactions
Compression
Concurrent Access

🚀 Usage

package main

import (
"github.com/azrod/kivigo"
"github.com/azrod/kivigo/backend/badger"
)

func main() {
// Basic configuration
opt := badger.DefaultOptions("./data")

// Custom configuration
customOpt := badger.NewOptions()
customOpt.Dir = "./data/keys"
customOpt.ValueDir = "./data/values"
customOpt.SyncWrites = true
customOpt.MemTableSize = 64 << 20 // 64MB

// Create backend
kvStore, err := badger.New(customOpt)
if err != nil {
panic(err)
}
defer kvStore.Close()

// Create client
client, err := kivigo.New(kvStore)
if err != nil {
panic(err)
}
}

📝 Notes

  • BadgerDB creates two directories: one for keys and one for values
  • The database automatically handles compaction and garbage collection
  • For production use, consider tuning MemTableSize and other options based on your workload
  • BadgerDB uses memory-mapped files for efficient access
  • The database supports encryption at rest (configure via BadgerDB options)
  • Transaction size limits apply - very large transactions may need to be split
  • BadgerDB is optimized for SSD storage but works on traditional HDDs

🔗 Additional Resources