libkvstore

package
v0.0.66 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound         = errors.New("key not found")
	ErrInvalidValue     = errors.New("invalid value for operation")
	ErrKeyExists        = errors.New("key already exists")
	ErrTxFailed         = errors.New("transaction failed")
	ErrTxConflict       = errors.New("transaction conflict")
	ErrLockUnavailable  = errors.New("lock unavailable")
	ErrConnectionFailed = errors.New("connection failed")
)

Predefined errors for key-value operations

Functions

func SetupLocalPDInstance

func SetupLocalPDInstance(ctx context.Context) (string, testcontainers.Container, func(), error)

func SetupLocalTiKVInstance

func SetupLocalTiKVInstance(ctx context.Context) (string, testcontainers.Container, func(), error)

func SetupLocalValKeyInstance

func SetupLocalValKeyInstance(ctx context.Context) (string, testcontainers.Container, func(), error)

Types

type Config

type Config struct {
	Addr     string
	Password string
}

type KVExecutor

type KVExecutor interface {
	// Basic operations
	Get(ctx context.Context, key Key) (json.RawMessage, error)
	Set(ctx context.Context, key Key, value json.RawMessage) error
	SetWithTTL(ctx context.Context, key Key, value json.RawMessage, ttl time.Duration) error
	Delete(ctx context.Context, key Key) error
	Exists(ctx context.Context, key Key) (bool, error)
	Keys(ctx context.Context, pattern string) ([]Key, error)

	// List operations
	ListPush(ctx context.Context, key Key, value json.RawMessage) error
	ListRange(ctx context.Context, key Key, start, stop int64) ([]json.RawMessage, error)
	ListTrim(ctx context.Context, key Key, start, stop int64) error
	ListLength(ctx context.Context, key Key) (int64, error)
	ListRPop(ctx context.Context, key Key) (json.RawMessage, error)

	// Set operations
	SetAdd(ctx context.Context, key Key, member json.RawMessage) error
	SetMembers(ctx context.Context, key Key) ([]json.RawMessage, error)
	SetRemove(ctx context.Context, key Key, member json.RawMessage) error
}

KVExecutor represents operations

type KVManager

type KVManager interface {
	// Executor returns a non-transactional executor
	Executor(ctx context.Context) (KVExecutor, error)
	Close() error
}

KVManager defines the interface for obtaining executors

type Key

type Key = string

type KeyValue

type KeyValue struct {
	Key   string
	Value json.RawMessage
	TTL   time.Time
}

KeyValue is used for backward compatibility with the old interface

type VKExecutor

type VKExecutor struct {
	// contains filtered or unexported fields
}

VKExecutor implements KVExecutor for Valkey

func (*VKExecutor) Delete

func (r *VKExecutor) Delete(ctx context.Context, key Key) error

func (*VKExecutor) Exists

func (r *VKExecutor) Exists(ctx context.Context, key Key) (bool, error)

func (*VKExecutor) Get

func (r *VKExecutor) Get(ctx context.Context, key Key) (json.RawMessage, error)

func (*VKExecutor) Keys

func (r *VKExecutor) Keys(ctx context.Context, pattern string) ([]Key, error)

func (*VKExecutor) ListLength

func (r *VKExecutor) ListLength(ctx context.Context, key Key) (int64, error)

func (*VKExecutor) ListPush

func (r *VKExecutor) ListPush(ctx context.Context, key Key, value json.RawMessage) error

func (*VKExecutor) ListRPop

func (r *VKExecutor) ListRPop(ctx context.Context, key Key) (json.RawMessage, error)

func (*VKExecutor) ListRange

func (r *VKExecutor) ListRange(ctx context.Context, key Key, start, stop int64) ([]json.RawMessage, error)

func (*VKExecutor) ListTrim

func (r *VKExecutor) ListTrim(ctx context.Context, key Key, start, stop int64) error

func (*VKExecutor) Set

func (r *VKExecutor) Set(ctx context.Context, key Key, value json.RawMessage) error

func (*VKExecutor) SetAdd

func (r *VKExecutor) SetAdd(ctx context.Context, key Key, member json.RawMessage) error

func (*VKExecutor) SetMembers

func (r *VKExecutor) SetMembers(ctx context.Context, key Key) ([]json.RawMessage, error)

func (*VKExecutor) SetRemove

func (r *VKExecutor) SetRemove(ctx context.Context, key Key, member json.RawMessage) error

func (*VKExecutor) SetWithTTL

func (r *VKExecutor) SetWithTTL(ctx context.Context, key Key, value json.RawMessage, ttl time.Duration) error

type VKManager

type VKManager struct {
	// contains filtered or unexported fields
}

func NewManager

func NewManager(cfg Config, ttl time.Duration) (*VKManager, error)

func (*VKManager) Close

func (m *VKManager) Close() error

func (*VKManager) Executor

func (m *VKManager) Executor(ctx context.Context) (KVExecutor, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL