kvtools / etcdv3

Valkeyrie: etcdv3
Apache License 2.0
2 stars 3 forks source link
etcd etcdv3 go golang kv-store valkeyrie

Valkeyrie etcd v3

GoDoc Build Status Go Report Card

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 Etcd
Put 🟢️
Get 🟢️
Delete 🟢️
Exists 🟢️
Watch 🟢️
WatchTree 🟢️
NewLock (Lock/Unlock) 🟢️
List 🟢️
DeleteTree 🟢️
AtomicPut 🟢️
AtomicDelete 🟢️

Supported Versions

Etcd version >= 3.0 with APIv3

Examples

package main

import (
    "context"
    "log"

    "github.com/kvtools/etcdv3"
    "github.com/kvtools/valkeyrie"
)

func main() {
    ctx := context.Background()

    config := &etcdv3.Config{
        Password: "example",
    }

    kv, err := valkeyrie.NewStore(ctx, etcdv3.StoreName, []string{"localhost:8500"}, 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)
    }
}