123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Package cache provides partial implementations of Guava Cache,
- // including support for LRU, Segmented LRU and TinyLFU.
- package cache
- // Key is any value which is comparable.
- // See http://golang.org/ref/spec#Comparison_operators for details.
- type Key interface{}
- // Value is any value.
- type Value interface{}
- // Cache is a key-value cache which entries are added and stayed in the
- // cache until either are evicted or manually invalidated.
- type Cache interface {
- // GetIfPresent returns value associated with Key or (nil, false)
- // if there is no cached value for Key.
- GetIfPresent(Key) (Value, bool)
- // Put associates value with Key. If a value is already associated
- // with Key, the old one will be replaced with Value.
- Put(Key, Value)
- // Invalidate discards cached value of the given Key.
- Invalidate(Key)
- // InvalidateAll discards all entries.
- InvalidateAll()
- // Stats copies cache statistics to given Stats pointer.
- Stats(*Stats)
- // Close implements io.Closer for cleaning up all resources.
- // Users must ensure the cache is not being used before closing or
- // after closed.
- Close() error
- }
- // Func is a generic callback for entry events in the cache.
- type Func func(Key, Value)
- // LoadingCache is a cache with values are loaded automatically and stored
- // in the cache until either evicted or manually invalidated.
- type LoadingCache interface {
- Cache
- // Get returns value associated with Key or call underlying LoaderFunc
- // to load value if it is not present.
- Get(Key) (Value, error)
- // Refresh loads new value for Key. If the Key already existed, the previous value
- // will continue to be returned by Get while the new value is loading.
- // If Key does not exist, this function will block until the value is loaded.
- Refresh(Key)
- }
- // LoaderFunc retrieves the value corresponding to given Key.
- type LoaderFunc func(Key) (Value, error)
- // Executor specifies how cache loader is run to refresh value for the Key.
- // By default, it is run in a new go routine.
- type Executor interface {
- // Execute runs the fn asynchronously.
- Execute(fn func())
- // Close shuts down all running tasks. Currently, the error returned is not being used.
- Close() error
- }
|