store

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2023 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// BigcacheType represents the storage type as a string value
	BigcacheType = "bigcache"
	// BigcacheTagPattern represents the tag pattern to be used as a key in specified storage
	BigcacheTagPattern = "gocache_tag_%s"
)
View Source
const (
	// FreecacheType represents the storage type as a string value
	FreecacheType = "freecache"
	// FreecacheTagPattern represents the tag pattern to be used as a key in specified storage
	FreecacheTagPattern = "freecache_tag_%s"
)
View Source
const (
	// GoCacheType represents the storage type as a string value
	GoCacheType = "go-cache"
	// GoCacheTagPattern represents the tag pattern to be used as a key in specified storage
	GoCacheTagPattern = "gocache_tag_%s"
)
View Source
const (
	// MemcacheType represents the storage type as a string value
	MemcacheType = "memcache"
	// MemcacheTagPattern represents the tag pattern to be used as a key in specified storage
	MemcacheTagPattern = "gocache_tag_%s"

	TagKeyExpiry = 720 * time.Hour
)
View Source
const (
	// PegasusType represents the storage type as a string value
	PegasusType = "pegasus"
	// PegasusTagPattern represents the tag pattern to be used as a key in specified storage
	PegasusTagPattern = "gocache_tag_%s"
	// PegasusNOTTL ttl(time-to-live) in seconds: -1 if ttl is not set; -2 if entry doesn't exist
	PegasusNOTTL   = -1
	PegasusNOENTRY = -2

	DefaultTable             = "gocache_pegasus"
	DefaultTablePartitionNum = 4
	DefaultScanNum           = 100
)
View Source
const (
	// RedisType represents the storage type as a string value
	RedisType = "redis"
	// RedisTagPattern represents the tag pattern to be used as a key in specified storage
	RedisTagPattern = "gocache_tag_%s"
)
View Source
const (
	// RedisClusterType represents the storage type as a string value
	RedisClusterType = "rediscluster"
	// RedisClusterTagPattern represents the tag pattern to be used as a key in specified storage
	RedisClusterTagPattern = "gocache_tag_%s"
)
View Source
const (
	// RistrettoType represents the storage type as a string value
	RistrettoType = "ristretto"
	// RistrettoTagPattern represents the tag pattern to be used as a key in specified storage
	RistrettoTagPattern = "gocache_tag_%s"
)
View Source
const NOT_FOUND_ERR string = "value not found in store"

Variables

This section is empty.

Functions

func CreatePegasusTable

func CreatePegasusTable(ctx context.Context, options *OptionsPegasus) error

CreatePegasusTable for create table by options

func DropPegasusTable

func DropPegasusTable(ctx context.Context, options *OptionsPegasus) error

DropPegasusTable for drop table

func NotFoundWithCause

func NotFoundWithCause(e error) error

func ValidatePegasusOptions

func ValidatePegasusOptions(options *OptionsPegasus) error

ValidatePegasusOptions validate pegasus options

Types

type BigcacheClientInterface

type BigcacheClientInterface interface {
	Get(key string) ([]byte, error)
	Set(key string, entry []byte) error
	Delete(key string) error
	Reset() error
}

BigcacheClientInterface represents a allegro/bigcache client

type BigcacheStore

type BigcacheStore struct {
	Client  BigcacheClientInterface
	Options *Options
}

BigcacheStore is a store for Bigcache

func NewBigcache

func NewBigcache(client BigcacheClientInterface, options ...Option) *BigcacheStore

NewBigcache creates a new store to Bigcache instance(s)

func (*BigcacheStore) Clear

func (s *BigcacheStore) Clear(_ context.Context) error

Clear resets all data in the store

func (*BigcacheStore) Delete

func (s *BigcacheStore) Delete(_ context.Context, key any) error

Delete removes data from Bigcache for given key identifier

func (*BigcacheStore) Get

func (s *BigcacheStore) Get(_ context.Context, key any) (any, error)

Get returns data stored from a given key

func (*BigcacheStore) GetType

func (s *BigcacheStore) GetType() string

GetType returns the store type

func (*BigcacheStore) GetWithTTL

func (s *BigcacheStore) GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*BigcacheStore) Invalidate

func (s *BigcacheStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Bigcache for given options

func (*BigcacheStore) Set

func (s *BigcacheStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in Bigcache for given key identifier

type FreecacheClientInterface

type FreecacheClientInterface interface {
	Get(key []byte) (value []byte, err error)
	GetInt(key int64) (value []byte, err error)
	TTL(key []byte) (timeLeft uint32, err error)
	Set(key, value []byte, expireSeconds int) (err error)
	SetInt(key int64, value []byte, expireSeconds int) (err error)
	Del(key []byte) (affected bool)
	DelInt(key int64) (affected bool)
	Clear()
}

FreecacheClientInterface represents a coocood/freecache client

type FreecacheStore

type FreecacheStore struct {
	Client  FreecacheClientInterface
	Options *Options
}

FreecacheStore is a store for freecache

func NewFreecache

func NewFreecache(client FreecacheClientInterface, options ...Option) *FreecacheStore

NewFreecache creates a new store to freecache instance(s)

func (*FreecacheStore) Clear

func (f *FreecacheStore) Clear(_ context.Context) error

Clear resets all data in the store

func (*FreecacheStore) Delete

func (f *FreecacheStore) Delete(_ context.Context, key any) error

Delete deletes an item in the cache by key and returns err or nil if a delete occurred

func (*FreecacheStore) Get

func (f *FreecacheStore) Get(_ context.Context, key any) (any, error)

Get returns data stored from a given key. It returns the value or not found error

func (*FreecacheStore) GetType

func (f *FreecacheStore) GetType() string

GetType returns the store type

func (*FreecacheStore) GetWithTTL

func (f *FreecacheStore) GetWithTTL(_ context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*FreecacheStore) Invalidate

func (f *FreecacheStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in freecache for given options

func (*FreecacheStore) Set

func (f *FreecacheStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set sets a key, value and expiration for a cache entry and stores it in the cache. If the key is larger than 65535 or value is larger than 1/1024 of the cache size, the entry will not be written to the cache. expireSeconds <= 0 means no expire, but it can be evicted when cache is full.

type GoCacheClientInterface

type GoCacheClientInterface interface {
	Get(k string) (any, bool)
	GetWithExpiration(k string) (any, time.Time, bool)
	Set(k string, x any, d time.Duration)
	Delete(k string)
	Flush()
}

GoCacheClientInterface represents a github.com/patrickmn/go-cache client

type GoCacheStore

type GoCacheStore struct {
	Client  GoCacheClientInterface
	Options *Options
	// contains filtered or unexported fields
}

GoCacheStore is a store for GoCache (memory) library

func NewGoCache

func NewGoCache(client GoCacheClientInterface, options ...Option) *GoCacheStore

NewGoCache creates a new store to GoCache (memory) library instance

func (*GoCacheStore) Clear

func (s *GoCacheStore) Clear(_ context.Context) error

Clear resets all data in the store

func (*GoCacheStore) Delete

func (s *GoCacheStore) Delete(_ context.Context, key any) error

Delete removes data in GoCache memoey cache for given key identifier

func (*GoCacheStore) Get

func (s *GoCacheStore) Get(_ context.Context, key any) (any, error)

Get returns data stored from a given key

func (*GoCacheStore) GetType

func (s *GoCacheStore) GetType() string

GetType returns the store type

func (*GoCacheStore) GetWithTTL

func (s *GoCacheStore) GetWithTTL(_ context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*GoCacheStore) Invalidate

func (s *GoCacheStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in GoCache memoey cache for given options

func (*GoCacheStore) Set

func (s *GoCacheStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in GoCache memoey cache for given key identifier

type InvalidateOption

type InvalidateOption func(o *InvalidateOptions)

InvalidateOption represents a cache invalidation function.

func WithInvalidateTags

func WithInvalidateTags(tags []string) InvalidateOption

WithInvalidateTags allows setting the invalidate tags.

type InvalidateOptions

type InvalidateOptions struct {
	Tags []string
}

type InvalidateOptionsMatcher

type InvalidateOptionsMatcher struct {
	Tags []string
}

func (InvalidateOptionsMatcher) Matches

func (m InvalidateOptionsMatcher) Matches(x interface{}) bool

func (InvalidateOptionsMatcher) String

func (m InvalidateOptionsMatcher) String() string

type MemcacheClientInterface

type MemcacheClientInterface interface {
	Get(key string) (item *memcache.Item, err error)
	Set(item *memcache.Item) error
	Delete(item string) error
	FlushAll() error
	CompareAndSwap(item *memcache.Item) error
	Add(item *memcache.Item) error
}

MemcacheClientInterface represents a bradfitz/gomemcache client

type MemcacheStore

type MemcacheStore struct {
	Client  MemcacheClientInterface
	Options *Options
}

MemcacheStore is a store for Memcache

func NewMemcache

func NewMemcache(client MemcacheClientInterface, options ...Option) *MemcacheStore

NewMemcache creates a new store to Memcache instance(s)

func (*MemcacheStore) Clear

func (s *MemcacheStore) Clear(_ context.Context) error

Clear resets all data in the store

func (*MemcacheStore) Delete

func (s *MemcacheStore) Delete(_ context.Context, key any) error

Delete removes data from Memcache for given key identifier

func (*MemcacheStore) Get

func (s *MemcacheStore) Get(_ context.Context, key any) (any, error)

Get returns data stored from a given key

func (*MemcacheStore) GetType

func (s *MemcacheStore) GetType() string

GetType returns the store type

func (*MemcacheStore) GetWithTTL

func (s *MemcacheStore) GetWithTTL(_ context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*MemcacheStore) Invalidate

func (s *MemcacheStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Memcache for given options

func (*MemcacheStore) Set

func (s *MemcacheStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in Memcache for given key identifier

type NotFound

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

func (NotFound) Cause

func (e NotFound) Cause() error

func (NotFound) Error

func (e NotFound) Error() string

func (NotFound) Is

func (e NotFound) Is(err error) bool

func (NotFound) Unwrap

func (e NotFound) Unwrap() error

type Option

type Option func(o *Options)

Option represents a store option function.

func WithCost

func WithCost(cost int64) Option

WithCost allows setting the memory capacity used by the item when setting a value. Actually it seems to be used by Ristretto library only.

func WithExpiration

func WithExpiration(expiration time.Duration) Option

WithExpiration allows to specify an expiration time when setting a value.

func WithTags

func WithTags(tags []string) Option

WithTags allows to specify associated tags to the current value.

type Options

type Options struct {
	Cost       int64
	Expiration time.Duration
	Tags       []string
}

func ApplyOptionsWithDefault

func ApplyOptionsWithDefault(defaultOptions *Options, opts ...Option) *Options

type OptionsMatcher

type OptionsMatcher struct {
	Cost       int64
	Expiration time.Duration
	Tags       []string
}

func (OptionsMatcher) Matches

func (m OptionsMatcher) Matches(x interface{}) bool

func (OptionsMatcher) String

func (m OptionsMatcher) String() string

type OptionsPegasus

type OptionsPegasus struct {
	*Options
	MetaServers []string

	TableName         string
	TablePartitionNum int
	TableScanNum      int
}

OptionsPegasus is options of Pegasus

type PegasusStore

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

PegasusStore is a store for Pegasus

func NewPegasus

func NewPegasus(ctx context.Context, options *OptionsPegasus) (*PegasusStore, error)

NewPegasus creates a new store to pegasus instance(s)

func (*PegasusStore) Clear

func (p *PegasusStore) Clear(ctx context.Context) error

Clear resets all data in the store

func (*PegasusStore) Close

func (p *PegasusStore) Close() error

Close when exit store

func (*PegasusStore) Delete

func (p *PegasusStore) Delete(ctx context.Context, key any) error

Delete removes data from Pegasus for given key identifier

func (*PegasusStore) Get

func (p *PegasusStore) Get(ctx context.Context, key any) (any, error)

Get returns data stored from a given key

func (*PegasusStore) GetType

func (p *PegasusStore) GetType() string

GetType returns the store type

func (*PegasusStore) GetWithTTL

func (p *PegasusStore) GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*PegasusStore) Invalidate

func (p *PegasusStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Pegasus for given options

func (*PegasusStore) Set

func (p *PegasusStore) Set(ctx context.Context, key, value any, options ...Option) error

Set defines data in Pegasus for given key identifier

func (*PegasusStore) SetTags

func (p *PegasusStore) SetTags(ctx context.Context, key any, tags []string) error

type RedisClientInterface

type RedisClientInterface interface {
	Get(ctx context.Context, key string) *redis.StringCmd
	TTL(ctx context.Context, key string) *redis.DurationCmd
	Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	Set(ctx context.Context, key string, values any, expiration time.Duration) *redis.StatusCmd
	Del(ctx context.Context, keys ...string) *redis.IntCmd
	FlushAll(ctx context.Context) *redis.StatusCmd
	SAdd(ctx context.Context, key string, members ...any) *redis.IntCmd
	SMembers(ctx context.Context, key string) *redis.StringSliceCmd
}

RedisClientInterface represents a go-redis/redis client

type RedisClusterClientInterface

type RedisClusterClientInterface interface {
	Get(ctx context.Context, key string) *redis.StringCmd
	TTL(ctx context.Context, key string) *redis.DurationCmd
	Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	Set(ctx context.Context, key string, values any, expiration time.Duration) *redis.StatusCmd
	Del(ctx context.Context, keys ...string) *redis.IntCmd
	FlushAll(ctx context.Context) *redis.StatusCmd
	SAdd(ctx context.Context, key string, members ...any) *redis.IntCmd
	SMembers(ctx context.Context, key string) *redis.StringSliceCmd
}

RedisClusterClientInterface represents a go-redis/redis clusclient

type RedisClusterStore

type RedisClusterStore struct {
	Clusclient RedisClusterClientInterface
	Options    *Options
}

RedisClusterStore is a store for Redis

func NewRedisCluster

func NewRedisCluster(client RedisClusterClientInterface, options ...Option) *RedisClusterStore

NewRedisCluster creates a new store to Redis instance(s)

func (*RedisClusterStore) Clear

func (s *RedisClusterStore) Clear(ctx context.Context) error

Clear resets all data in the store

func (*RedisClusterStore) Delete

func (s *RedisClusterStore) Delete(ctx context.Context, key any) error

Delete removes data from Redis for given key identifier

func (*RedisClusterStore) Get

func (s *RedisClusterStore) Get(ctx context.Context, key any) (any, error)

Get returns data stored from a given key

func (*RedisClusterStore) GetType

func (s *RedisClusterStore) GetType() string

GetType returns the store type

func (*RedisClusterStore) GetWithTTL

func (s *RedisClusterStore) GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*RedisClusterStore) Invalidate

func (s *RedisClusterStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Redis for given options

func (*RedisClusterStore) Set

func (s *RedisClusterStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in Redis for given key identifier

type RedisStore

type RedisStore struct {
	Client  RedisClientInterface
	Options *Options
}

RedisStore is a store for Redis

func NewRedis

func NewRedis(client RedisClientInterface, options ...Option) *RedisStore

NewRedis creates a new store to Redis instance(s)

func (*RedisStore) Clear

func (s *RedisStore) Clear(ctx context.Context) error

Clear resets all data in the store

func (*RedisStore) Delete

func (s *RedisStore) Delete(ctx context.Context, key any) error

Delete removes data from Redis for given key identifier

func (*RedisStore) Get

func (s *RedisStore) Get(ctx context.Context, key any) (any, error)

Get returns data stored from a given key

func (*RedisStore) GetType

func (s *RedisStore) GetType() string

GetType returns the store type

func (*RedisStore) GetWithTTL

func (s *RedisStore) GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*RedisStore) Invalidate

func (s *RedisStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Redis for given options

func (*RedisStore) Set

func (s *RedisStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in Redis for given key identifier

type RistrettoClientInterface

type RistrettoClientInterface interface {
	Get(key any) (any, bool)
	SetWithTTL(key, value any, cost int64, ttl time.Duration) bool
	Del(key any)
	Clear()
}

RistrettoClientInterface represents a dgraph-io/ristretto client

type RistrettoStore

type RistrettoStore struct {
	Client  RistrettoClientInterface
	Options *Options
}

RistrettoStore is a store for Ristretto (memory) library

func NewRistretto

func NewRistretto(client RistrettoClientInterface, options ...Option) *RistrettoStore

NewRistretto creates a new store to Ristretto (memory) library instance

func (*RistrettoStore) Clear

func (s *RistrettoStore) Clear(_ context.Context) error

Clear resets all data in the store

func (*RistrettoStore) Delete

func (s *RistrettoStore) Delete(_ context.Context, key any) error

Delete removes data in Ristretto memoey cache for given key identifier

func (*RistrettoStore) Get

func (s *RistrettoStore) Get(_ context.Context, key any) (any, error)

Get returns data stored from a given key

func (*RistrettoStore) GetType

func (s *RistrettoStore) GetType() string

GetType returns the store type

func (*RistrettoStore) GetWithTTL

func (s *RistrettoStore) GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)

GetWithTTL returns data stored from a given key and its corresponding TTL

func (*RistrettoStore) Invalidate

func (s *RistrettoStore) Invalidate(ctx context.Context, options ...InvalidateOption) error

Invalidate invalidates some cache data in Redis for given options

func (*RistrettoStore) Set

func (s *RistrettoStore) Set(ctx context.Context, key any, value any, options ...Option) error

Set defines data in Ristretto memoey cache for given key identifier

type StoreInterface

type StoreInterface interface {
	Get(ctx context.Context, key any) (any, error)
	GetWithTTL(ctx context.Context, key any) (any, time.Duration, error)
	Set(ctx context.Context, key any, value any, options ...Option) error
	Delete(ctx context.Context, key any) error
	Invalidate(ctx context.Context, options ...InvalidateOption) error
	Clear(ctx context.Context) error
	GetType() string
}

StoreInterface is the interface for all available stores

Jump to

Keyboard shortcuts

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