Documentation
¶
Overview ¶
Package cache defines interfaces and implementations of generic in-memory caches.
Index ¶
- type Cache
- func NewOtterCache[K KeyString, V any](config *Config) (Cache[K, V], error)
- func NewOtterCacheWithMetrics[K KeyString, V any](name string, config *Config) (Cache[K, V], error)
- func NewRistrettoCache[K KeyString, V any](config *Config) (Cache[K, V], error)
- func NewRistrettoCacheWithMetrics[K KeyString, V any](name string, config *Config) (Cache[K, V], error)
- func NewStandardCache[K KeyString, V any](config *Config) (Cache[K, V], error)
- func NewStandardCacheWithMetrics[K KeyString, V any](name string, config *Config) (Cache[K, V], error)
- func NewTheineCache[K KeyString, V any](config *Config) (Cache[K, V], error)
- func NewTheineCacheWithMetrics[K KeyString, V any](name string, config *Config) (Cache[K, V], error)
- func NoopCache[K KeyString, V any]() Cache[K, V]
- type Config
- type KeyString
- type Metrics
- type StringKey
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[K KeyString, V any] interface { // Get returns the value for the given key in the cache, if it exists. Get(key K) (V, bool) // Set sets a value for the key in the cache, with the given cost. Set(key K, entry V, cost int64) bool // Wait waits for the cache to process and apply updates. Wait() // Close closes the cache's background workers (if any). Close() // GetMetrics returns the metrics block for the cache. GetMetrics() Metrics zerolog.LogObjectMarshaler }
Cache defines an interface for a generic cache.
func NewOtterCache ¶ added in v1.35.1
func NewOtterCacheWithMetrics ¶ added in v1.35.1
func NewRistrettoCache ¶ added in v1.35.1
NewRistrettoCache creates a new ristretto cache from the given config.
func NewRistrettoCacheWithMetrics ¶ added in v1.35.1
func NewRistrettoCacheWithMetrics[K KeyString, V any](name string, config *Config) (Cache[K, V], error)
NewRistrettoCacheWithMetrics creates a new ristretto cache from the given config that also reports metrics to the default Prometheus registry.
func NewStandardCache ¶ added in v1.35.1
NewStandardCache creates a new cache with the given configuration.
func NewStandardCacheWithMetrics ¶ added in v1.35.1
func NewTheineCache ¶ added in v1.35.1
func NewTheineCacheWithMetrics ¶ added in v1.35.1
type Config ¶
type Config struct {
// NumCounters determines the number of counters (keys) to keep that hold
// access frequency information. It's generally a good idea to have more
// counters than the max cache capacity, as this will improve eviction
// accuracy and subsequent hit ratios.
//
// For example, if you expect your cache to hold 1,000,000 items when full,
// NumCounters should be 10,000,000 (10x). Each counter takes up roughly
// 3 bytes (4 bits for each counter * 4 copies plus about a byte per
// counter for the bloom filter). Note that the number of counters is
// internally rounded up to the nearest power of 2, so the space usage
// may be a little larger than 3 bytes * NumCounters.
NumCounters int64
// MaxCost can be considered as the cache capacity, in whatever units you
// choose to use.
//
// For example, if you want the cache to have a max capacity of 100MB, you
// would set MaxCost to 100,000,000 and pass an item's number of bytes as
// the `cost` parameter for calls to Set. If new items are accepted, the
// eviction process will take care of making room for the new item and not
// overflowing the MaxCost value.
MaxCost int64
// DefaultTTL configures a default deadline on the lifetime of any keys set
// to the cache.
DefaultTTL time.Duration
}
Config for caching. See: https://github.com/outcaste-io/ristretto#Config
func (*Config) MarshalZerologObject ¶ added in v1.13.0
type KeyString ¶ added in v1.35.1
type KeyString interface {
comparable
KeyString() string
}
KeyString is an interface for keys that can be converted to strings.
type Metrics ¶
type Metrics interface {
// Hits is the number of cache hits.
Hits() uint64
// Misses is the number of cache misses.
Misses() uint64
// CostAdded returns the total cost of added items.
CostAdded() uint64
// CostEvicted returns the total cost of evicted items.
CostEvicted() uint64
}
Metrics defines metrics exported by the cache.
Click to show internal directories.
Click to hide internal directories.