https://github.com/kvtools/zookeeper
Valkeyrie: zookeeper
https://github.com/kvtools/zookeeper
go golang kv-store valkeyrie zookeeper
Last synced: about 1 year ago
JSON representation
Valkeyrie: zookeeper
- Host: GitHub
- URL: https://github.com/kvtools/zookeeper
- Owner: kvtools
- License: apache-2.0
- Created: 2022-09-07T16:25:16.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-17T12:13:04.000Z (over 1 year ago)
- Last Synced: 2025-03-24T14:02:32.567Z (about 1 year ago)
- Topics: go, golang, kv-store, valkeyrie, zookeeper
- Language: Go
- Homepage:
- Size: 112 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Valkeyrie Zookeeper
[](https://godoc.org/github.com/kvtools/zookeeper)
[](https://github.com/kvtools/zookeeper/actions/workflows/build.yml)
[](https://goreportcard.com/report/github.com/kvtools/zookeeper)
[`valkeyrie`](https://github.com/kvtools/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](https://github.com/kvtools/valkeyrie/blob/master/store/store.go#L69) interface.
| Calls | Zookeeper |
|-----------------------|:---------:|
| Put | 🟢️ |
| Get | 🟢️ |
| Delete | 🟢️ |
| Exists | 🟢️ |
| Watch | 🟢️ |
| WatchTree | 🟢️ |
| NewLock (Lock/Unlock) | 🟢️ |
| List | 🟢️ |
| DeleteTree | 🟢️ |
| AtomicPut | 🟢️ |
| AtomicDelete | 🟢️ |
## Supported Versions
Zookeeper versions >= `3.4.5`.
## Examples
```go
package main
import (
"context"
"log"
"github.com/kvtools/valkeyrie"
"github.com/kvtools/zookeeper"
)
func main() {
ctx := context.Background()
config := &zookeeper.Config{
Username: "example",
}
kv, err := valkeyrie.NewStore(ctx, zookeeper.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)
}
}
```