Valkeyrie BoltDB
September 8, 2022 ยท View on GitHub
valkeyrie provides a Go native library to store metadata using Distributed Key/Value stores (or common databases).
Compatibility
A storage backend in valkeyrie implements (fully or partially) the Store interface.
| Calls | BoltDB |
|---|---|
| Put | ๐ข |
| Get | ๐ข |
| Delete | ๐ข |
| Exists | ๐ข |
| Watch | ๐ด |
| WatchTree | ๐ด |
| NewLock (Lock/Unlock) | ๐ด |
| List | ๐ข |
| DeleteTree | ๐ข |
| AtomicPut | ๐ข |
| AtomicDelete | ๐ข |
Examples
package main
import (
"context"
"log"
"github.com/kvtools/boltdb"
"github.com/kvtools/valkeyrie"
)
func main() {
ctx := context.Background()
config := &boltdb.Config{
Bucket: "example",
}
kv, err := valkeyrie.NewStore(ctx, boltdb.StoreName, []string{"/tmp/mydatabase"}, config)
if err != nil {
log.Fatal("Cannot create store")
}
key := "foo"
err = kv.Put(ctx, key, []byte("bar"), nil)
if err != nil {
log.Fatalf("Error trying to put value at key: %v", key)
}
pair, err := kv.Get(ctx, key, nil)
if err != nil {
log.Fatalf("Error trying accessing value at key: %v", key)
}
log.Printf("value: %s", string(pair.Value))
err = kv.Delete(ctx, key)
if err != nil {
log.Fatalf("Error trying to delete key %v", key)
}
}
