Skip to content

kvtools/redis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

88b0427 · Mar 27, 2025

History

43 Commits
Mar 27, 2025
Jun 30, 2024
Oct 5, 2023
Mar 27, 2025
Sep 8, 2022
Jan 17, 2025
Sep 6, 2022
Mar 27, 2025
Mar 27, 2025
Sep 6, 2022
Sep 8, 2022
Jan 17, 2025
Oct 5, 2023

Repository files navigation

Valkeyrie Redis

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

Supported Versions

Redis versions >= 3.2.6. Key space notification needs to be enabled to have access to Watch and Lock methods.

Examples

package main

import (
	"context"
	"log"

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

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

	config := &redis.Config{
		Bucket: "example",
	}

	kv, err := valkeyrie.NewStore(ctx, redis.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)
	}
}