Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var CacherTests = []struct { Size int Func func(t *testing.T, c Cacher) }{ {Size: 1, Func: TestBasic}, {Size: 2, Func: TestEviction}, }
CacherTests is a list of all Cacher tests
Functions ¶
func TestEviction ¶
Types ¶
type Cacher ¶
type Cacher interface { // Put inserts an element into the cache. If spaced is required, elements will // be evicted. Put(key, value interface{}) // Get returns the entry in the cache with the key specified, if no value // exists, false is returned. Get(key interface{}) (interface{}, bool) // Evict removes the specified entry from the cache Evict(key interface{}) // Flush removes all entries from the cache Flush() }
Cacher acts as a best effort key value store. Keys must be comparable, as defined by https://golang.org/ref/spec#Comparison_operators.
type Deduplicator ¶
type Deduplicator interface { // Deduplicate returns either the provided value, or a previously provided // value with the same ID that hasn't yet been evicted Deduplicate(Evictable) Evictable // Flush removes all entries from the cache Flush() }
Deduplicator acts as a best effort deduplication service
type Evictable ¶
type Evictable interface { // Key must return a comparable value as defined by // https://golang.org/ref/spec#Comparison_operators. Key() interface{} Evict() }
Evictable allows the object to be notified when it is evicted
type EvictableLRU ¶
type EvictableLRU struct { Size int // contains filtered or unexported fields }
EvictableLRU is an LRU cache that notifies the objects when they are evicted.
func (*EvictableLRU) Deduplicate ¶
func (c *EvictableLRU) Deduplicate(value Evictable) Evictable
func (*EvictableLRU) Flush ¶
func (c *EvictableLRU) Flush()
Click to show internal directories.
Click to hide internal directories.