store

package
v0.1.0-alpha.2 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultBloomFalsePositiveRate = 0.01

Variables

View Source
var ErrInvalidBloomOptions = errors.New("invalid bloom options")
View Source
var ErrNotConfigured = errors.New("store not configured")

Functions

func NewNoop

func NewNoop() *noopStore

Types

type BloomFilter

type BloomFilter interface {
	Add(ctx context.Context, key string) error
	Contains(ctx context.Context, key string) (bool, error)
	TestAndAdd(ctx context.Context, key string) (bool, error)
}

type BloomOption

type BloomOption func(*BloomOptions)

func WithBloomBits

func WithBloomBits(bits uint64) BloomOption

func WithBloomCapacity

func WithBloomCapacity(capacity uint64) BloomOption

func WithBloomFalsePositiveRate

func WithBloomFalsePositiveRate(rate float64) BloomOption

func WithBloomHashes

func WithBloomHashes(hashes uint64) BloomOption

func WithBloomNamespace

func WithBloomNamespace(namespace string) BloomOption

func WithBloomSeed

func WithBloomSeed(seed uint64) BloomOption

type BloomOptions

type BloomOptions struct {
	Namespace         string
	Capacity          uint64
	FalsePositiveRate float64
	Bits              uint64
	Hashes            uint64
	Seed              uint64
}

func NewBloomOptions

func NewBloomOptions(options ...BloomOption) BloomOptions

func (*BloomOptions) ApplyDefaults

func (o *BloomOptions) ApplyDefaults()

func (BloomOptions) Validate

func (o BloomOptions) Validate() error

type BloomStats

type BloomStats struct {
	Namespace         string
	Capacity          uint64
	FalsePositiveRate float64
	Bits              uint64
	Hashes            uint64
	Added             uint64
}

type BloomStatsProvider

type BloomStatsProvider interface {
	Stats(ctx context.Context) (BloomStats, error)
}

type CacheAside

type CacheAside interface {
	GetOrSet(ctx context.Context, key string, ttl time.Duration, load Loader) (Entry, error)
}

type Entry

type Entry struct {
	Key       string
	Value     []byte
	ExpiresAt int64
	Metadata  map[string]string
}

func NewEntry

func NewEntry(key string, value []byte, ttl time.Duration) Entry

func (Entry) Clone

func (e Entry) Clone() Entry

func (Entry) Expired

func (e Entry) Expired(now time.Time) bool

type Loader

type Loader func(ctx context.Context, key string) (Entry, error)

type Option

type Option func(*Options)

func WithCacheAside

func WithCacheAside(enabled bool) Option

func WithCapacity

func WithCapacity(capacity int) Option

func WithDefaultTTL

func WithDefaultTTL(ttl time.Duration) Option

func WithNamespace

func WithNamespace(namespace string) Option

func WithSingleflight

func WithSingleflight(enabled bool) Option

type Options

type Options struct {
	Namespace    string
	Capacity     int
	DefaultTTL   time.Duration
	CacheAside   bool
	Singleflight bool
}

func NewOptions

func NewOptions(options ...Option) Options

type ResettableBloomFilter

type ResettableBloomFilter interface {
	Reset(ctx context.Context) error
}

type Store

type Store interface {
	Get(ctx context.Context, key string) (Entry, error)
	Set(ctx context.Context, entry Entry) error
	Add(ctx context.Context, entry Entry) error
	Delete(ctx context.Context, key string) error
	List(ctx context.Context, prefix string) ([]Entry, error)
}

Jump to

Keyboard shortcuts

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