You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Consul
Put
🟢️
Get
🟢️
Delete
🟢️
Exists
🟢️
Watch
🟢️
WatchTree
🟢️
NewLock (Lock/Unlock)
🟢️
List
🟢️
DeleteTree
🟢️
AtomicPut
🟢️
AtomicDelete
🟢️
Supported Versions
Consul versions >= 0.5.1 because it uses Sessions with Delete behavior for the use of TTLs (mimics zookeeper's Ephemeral node support).
If you don't plan to use TTLs: you can use Consul version 0.4.0+.
Examples
package main
import (
"context""log""time""github.com/kvtools/consul""github.com/kvtools/valkeyrie"
)
funcmain() {
ctx:=context.Background()
config:=&consul.Config{
ConnectionTimeout: 10*time.Second,
}
kv, err:=valkeyrie.NewStore(ctx, consul.StoreName, []string{"localhost:8500"}, config)
iferr!=nil {
log.Fatal("Cannot create store")
}
key:="foo"err=kv.Put(ctx, key, []byte("bar"), nil)
iferr!=nil {
log.Fatalf("Error trying to put value at key: %v", key)
}
pair, err:=kv.Get(ctx, key, nil)
iferr!=nil {
log.Fatalf("Error trying accessing value at key: %v", key)
}
log.Printf("value: %s", string(pair.Value))
err=kv.Delete(ctx, key)
iferr!=nil {
log.Fatalf("Error trying to delete key %v", key)
}
}