Version: v1.0.2 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2021 License: Apache-2.0, CC-BY-SA-4.0 Imports: 9 Imported by: 0




This section is empty.


View Source
var (
	// ErrMultipleEndpointsUnsupported is thrown when there are
	// multiple endpoints specified for Redis
	ErrMultipleEndpointsUnsupported = errors.New("redis: does not support multiple endpoints")

	// ErrTLSUnsupported is thrown when tls config is given
	ErrTLSUnsupported = errors.New("redis does not support tls")

	// ErrAbortTryLock is thrown when a user stops trying to seek the lock
	// by sending a signal to the stop chan, this is used to verify if the
	// operation succeeded
	ErrAbortTryLock = errors.New("redis: lock operation aborted")


func New

func New(endpoints []string, options *store.Config) (store.Store, error)

New creates a new Redis client given a list of endpoints and optional tls config

func Register

func Register()

Register registers Redis to libkv


type Redis

type Redis struct {
	// contains filtered or unexported fields

Redis implements libkv.Store interface with redis backend

func (*Redis) AtomicDelete

func (r *Redis) AtomicDelete(key string, previous *store.KVPair) (bool, error)

AtomicDelete is an atomic delete operation on a single value the value will be deleted if previous matched the one stored in db

func (*Redis) AtomicPut

func (r *Redis) AtomicPut(key string, value []byte, previous *store.KVPair, options *store.WriteOptions) (bool, *store.KVPair, error)

AtomicPut is an atomic CAS operation on a single value. Pass previous = nil to create a new key. we introduced script on this page, so atomicity is guaranteed

func (*Redis) Close

func (r *Redis) Close()

Close the store connection

func (*Redis) Delete

func (r *Redis) Delete(key string) error

Delete the value at the specified key

func (*Redis) DeleteTree

func (r *Redis) DeleteTree(directory string) error

DeleteTree deletes a range of keys under a given directory glitch: we list all available keys first and then delete them all it costs two operations on redis, so is not atomicity.

func (*Redis) Exists

func (r *Redis) Exists(key string, opts *store.ReadOptions) (bool, error)

Exists verify if a Key exists in the store

func (*Redis) Get

func (r *Redis) Get(key string, opts *store.ReadOptions) (*store.KVPair, error)

Get a value given its key

func (*Redis) List

func (r *Redis) List(directory string, opts *store.ReadOptions) ([]*store.KVPair, error)

List the content of a given prefix

func (*Redis) NewLock

func (r *Redis) NewLock(key string, options *store.LockOptions) (store.Locker, error)

NewLock creates a lock for a given key. The returned Locker is not held and must be acquired with `.Lock`. The Value is optional.

func (*Redis) Put

func (r *Redis) Put(key string, value []byte, options *store.WriteOptions) error

Put a value at the specified key

func (*Redis) Watch

func (r *Redis) Watch(key string, stopCh <-chan struct{}, opts *store.ReadOptions) (<-chan *store.KVPair, error)

Watch for changes on a key glitch: we use notified-then-retrieve to retrieve *store.KVPair. so the responses may sometimes inaccurate

func (*Redis) WatchTree

func (r *Redis) WatchTree(directory string, stopCh <-chan struct{}, opts *store.ReadOptions) (<-chan []*store.KVPair, error)

WatchTree watches for changes on child nodes under a given directory

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL