Documentation
¶
Index ¶
- func HashKey(key string) string
- type BackgroundConfig
- type Cache
- type Config
- type FifoCache
- func (c *FifoCache) Fetch(ctx context.Context, keys []string) (found []string, bufs [][]byte, missing []string)
- func (c *FifoCache) Get(ctx context.Context, key string) (interface{}, bool)
- func (c *FifoCache) Put(ctx context.Context, keys []string, values []interface{})
- func (c *FifoCache) Stop() error
- func (c *FifoCache) Store(ctx context.Context, keys []string, bufs [][]byte)
- type FifoCacheConfig
- type Memcached
- type MemcachedClient
- type MemcachedClientConfig
- type MemcachedConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BackgroundConfig ¶
type BackgroundConfig struct { WriteBackGoroutines int `yaml:"writeback_goroutines,omitempty"` WriteBackBuffer int `yaml:"writeback_buffer,omitempty"` }
BackgroundConfig is config for a Background Cache.
func (*BackgroundConfig) RegisterFlagsWithPrefix ¶
func (cfg *BackgroundConfig) RegisterFlagsWithPrefix(prefix string, description string, f *flag.FlagSet)
RegisterFlagsWithPrefix adds the flags required to config this to the given FlagSet
type Cache ¶
type Cache interface { Store(ctx context.Context, key []string, buf [][]byte) Fetch(ctx context.Context, keys []string) (found []string, bufs [][]byte, missing []string) Stop() error }
Cache byte arrays by key.
func Instrument ¶
Instrument returns an instrumented cache.
func NewBackground ¶
func NewBackground(name string, cfg BackgroundConfig, cache Cache) Cache
NewBackground returns a new Cache that does stores on background goroutines.
type Config ¶
type Config struct { EnableFifoCache bool `yaml:"enable_fifocache,omitempty"` DefaultValidity time.Duration `yaml:"defaul_validity,omitempty"` Background BackgroundConfig `yaml:"background,omitempty"` Memcache MemcachedConfig `yaml:"memcached,omitempty"` MemcacheClient MemcachedClientConfig `yaml:"memcached_client,omitempty"` Fifocache FifoCacheConfig `yaml:"fifocache,omitempty"` // This is to name the cache metrics properly. Prefix string `yaml:"prefix,omitempty"` // For tests to inject specific implementations. Cache Cache }
Config for building Caches.
type FifoCache ¶
type FifoCache struct {
// contains filtered or unexported fields
}
FifoCache is a simple string -> interface{} cache which uses a fifo slide to manage evictions. O(1) inserts and updates, O(1) gets.
func NewFifoCache ¶
func NewFifoCache(name string, cfg FifoCacheConfig) *FifoCache
NewFifoCache returns a new initialised FifoCache of size.
func (*FifoCache) Fetch ¶
func (c *FifoCache) Fetch(ctx context.Context, keys []string) (found []string, bufs [][]byte, missing []string)
Fetch implements Cache.
func (*FifoCache) Get ¶
Get returns the stored value against the key and when the key was last updated.
type FifoCacheConfig ¶
type FifoCacheConfig struct { Size int `yaml:"size,omitempty"` Validity time.Duration `yaml:"validity,omitempty"` }
FifoCacheConfig holds config for the FifoCache.
func (*FifoCacheConfig) RegisterFlagsWithPrefix ¶
func (cfg *FifoCacheConfig) RegisterFlagsWithPrefix(prefix, description string, f *flag.FlagSet)
RegisterFlagsWithPrefix adds the flags required to config this to the given FlagSet
type Memcached ¶
type Memcached struct {
// contains filtered or unexported fields
}
Memcached type caches chunks in memcached
func NewMemcached ¶
func NewMemcached(cfg MemcachedConfig, client MemcachedClient, name string) *Memcached
NewMemcached makes a new Memcache
type MemcachedClient ¶
type MemcachedClient interface { GetMulti(keys []string) (map[string]*memcache.Item, error) Set(item *memcache.Item) error }
MemcachedClient interface exists for mocking memcacheClient.
func NewMemcachedClient ¶
func NewMemcachedClient(cfg MemcachedClientConfig) MemcachedClient
NewMemcachedClient creates a new MemcacheClient that gets its server list from SRV and updates the server list on a regular basis.
type MemcachedClientConfig ¶
type MemcachedClientConfig struct { Host string `yaml:"host,omitempty"` Service string `yaml:"service,omitempty"` Timeout time.Duration `yaml:"timeout,omitempty"` MaxIdleConns int `yaml:"max_idle_conns,omitempty"` UpdateInterval time.Duration `yaml:"update_interval,omitempty"` }
MemcachedClientConfig defines how a MemcachedClient should be constructed.
func (*MemcachedClientConfig) RegisterFlagsWithPrefix ¶
func (cfg *MemcachedClientConfig) RegisterFlagsWithPrefix(prefix, description string, f *flag.FlagSet)
RegisterFlagsWithPrefix adds the flags required to config this to the given FlagSet
type MemcachedConfig ¶
type MemcachedConfig struct { Expiration time.Duration `yaml:"expiration,omitempty"` BatchSize int `yaml:"batch_size,omitempty"` Parallelism int `yaml:"parallelism,omitempty"` }
MemcachedConfig is config to make a Memcached
func (*MemcachedConfig) RegisterFlagsWithPrefix ¶
func (cfg *MemcachedConfig) RegisterFlagsWithPrefix(prefix, description string, f *flag.FlagSet)
RegisterFlagsWithPrefix adds the flags required to config this to the given FlagSet