cache

package
v2.1.7 Latest Latest
Warning

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

Go to latest
Published: Nov 17, 2021 License: Apache-2.0 Imports: 20 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrCacheMiss = errors.New("cache: key is missing")

Functions

func AddCacheFlagsToCmd

func AddCacheFlagsToCmd(cmd *cobra.Command, opts ...func(client *redis.Client)) func() (*Cache, error)

AddCacheFlagsToCmd adds flags which control caching to the specified command

func CollectMetrics

func CollectMetrics(client *redis.Client, registry MetricsRegistry)

CollectMetrics add transport wrapper that pushes metrics into the specified metrics registry

func NewTwoLevelClient

func NewTwoLevelClient(client CacheClient, inMemoryExpiration time.Duration) *twoLevelClient

NewTwoLevelClient creates cache client that proxies requests to given external cache and tries to minimize number of requests to external client by storing cache entries in local in-memory cache.

Types

type Cache

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

Cache provides strongly types methods to store and retrieve values from shared cache

func NewCache

func NewCache(client CacheClient) *Cache

func (*Cache) GetClient

func (c *Cache) GetClient() CacheClient

func (*Cache) GetItem

func (c *Cache) GetItem(key string, item interface{}) error

func (*Cache) NotifyUpdated

func (c *Cache) NotifyUpdated(key string) error

func (*Cache) OnUpdated

func (c *Cache) OnUpdated(ctx context.Context, key string, callback func() error) error

func (*Cache) SetClient

func (c *Cache) SetClient(client CacheClient)

func (*Cache) SetItem

func (c *Cache) SetItem(key string, item interface{}, expiration time.Duration, delete bool) error

type CacheClient

type CacheClient interface {
	Set(item *Item) error
	Get(key string, obj interface{}) error
	Delete(key string) error
	OnUpdated(ctx context.Context, key string, callback func() error) error
	NotifyUpdated(key string) error
}

func NewRedisCache

func NewRedisCache(client *redis.Client, expiration time.Duration) CacheClient

type InMemoryCache

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

func NewInMemoryCache

func NewInMemoryCache(expiration time.Duration) *InMemoryCache

func (*InMemoryCache) Delete

func (i *InMemoryCache) Delete(key string) error

func (*InMemoryCache) Flush

func (i *InMemoryCache) Flush()

func (*InMemoryCache) Get

func (i *InMemoryCache) Get(key string, obj interface{}) error

func (*InMemoryCache) HasSame

func (i *InMemoryCache) HasSame(key string, obj interface{}) (bool, error)

HasSame returns true if key with the same value already present in cache

func (*InMemoryCache) Items

func (i *InMemoryCache) Items(createNewObject func() interface{}) (map[string]interface{}, error)

Items return a list of items in the cache; requires passing a constructor function so that the items can be decoded from gob format.

func (*InMemoryCache) NotifyUpdated

func (i *InMemoryCache) NotifyUpdated(key string) error

func (*InMemoryCache) OnUpdated

func (i *InMemoryCache) OnUpdated(ctx context.Context, key string, callback func() error) error

func (*InMemoryCache) Set

func (i *InMemoryCache) Set(item *Item) error

type Item

type Item struct {
	Key    string
	Object interface{}
	// Expiration is the cache expiration time.
	Expiration time.Duration
}

type MetricsRegistry

type MetricsRegistry interface {
	IncRedisRequest(failed bool)
	ObserveRedisRequestDuration(duration time.Duration)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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