stash_api library

Standard caching API for Dart. Defines a common mechanism to create, access, update, and remove information from caches.

Classes

AccessedExpiryPolicy
An ExpiryPolicy that defines the expiry Duration of a Cache Entry based on the last time it was accessed. Accessed does not include a cache update.
BytesReader
Defines the base class supporting reads from a stream of bytes
BytesWriter
Defines the base class supporting writes to a stream of bytes
Cache
The Stash cache definition and the hub for the creation of the Cache caches
CacheCodec
Defines the contract of a binary codec that should be used for the serialization / deserealization of a value
CacheEntry
The wrapper around the object that is added to the cache
CacheEntryEvent
A Cache entry event base class.
CacheEvent
A Cache event base class.
CacheStat
Base class with all the stat fields backing up cache expiration and eviction strategies
CacheStore
The definition of a cache store
CreatedEntryEvent
A Cache entry created event
CreatedExpiryPolicy
An ExpiryPolicy that defines the expiry Duration of a Cache Entry based on when it was created. An update does not reset the expiry time.
DefaultCache
Default implementation of the Cache interface
EternalExpiryPolicy
An eternal ExpiryPolicy specifies that Cache Entries won't expire. This however doesn't mean they won't be evicted if an underlying implementation needs to free-up resources where by it may choose to evict entries that are not due to expire.
EvictedEntryEvent
A Cache entry evicted event
EvictionPolicy
Defines the eviction policy contract that every cache eviction algorithm should implement
ExpiredEntryEvent
A Cache entry expired event
ExpiryPolicy
Defines functions to determine when cache entries will expire based on creation, access and modification operations.
FifoEvictionPolicy
Using this algorithm the cache behaves in the same way as a FIFO queue. The cache evicts the sampled entries in the order they were added, without any regard to how often or how many times they were accessed before. This algorithm uses CacheStat.creationTime to keep track of when a entry was created.
FiloEvictionPolicy
This algorithm the cache behaves in the same way as a stack and exact opposite way as a FIFO queue. The cache evicts the entry added most recently first without any regard to how often or how many times it was accessed before. This algorithm uses CacheStat.creationTime to keep track of when a entry was created.
FullSampler
A KeySampler that doesn't perform any sampling
KeySampler
Defines a strategy to sample elements from a cache key collection
LfuEvictionPolicy
Counts how often an item is needed. Those that are used least often are discarded first. This works very similar to LRU except that instead of storing the value of how recently a block was accessed, we store the value of how many times it was accessed. So of course while running an access sequence we will replace a entry which was used least number of times from our cache. E.g., if A was used (accessed) 5 times and B was used 3 times and others C and D were used 10 times each, we will replace B. This algorithm uses the CacheStat.hitCount to keep track of how many times a entry was uses.
LruEvictionPolicy
Discards the least recently used items first. This algorithm uses the CacheStat.accessTime to keep track of what was used when.
MfuEvictionPolicy
Counts how often an item is needed. Those that are used most often are discarded first. This works very similar to MRU except that instead of storing the value of how recently a block was accessed, we store the value of how many times it was accessed. So of course while running an access sequence we will replace a entry which was used most number of times from our cache. E.g., if A was used (accessed) 5 times and B was used 3 times and C was used 10 times, we will replace C. This algorithm uses the CacheStat.hitCount to keep track of how many times a entry was uses.
ModifiedExpiryPolicy
An ExpiryPolicy that defines the expiry Duration of a Cache Entry based on the last time it was updated. Updating includes created and changing (updating) an entry.
MruEvictionPolicy
Discards, in contrast to LRU, the most recently used items first. This algorithm uses the CacheStat.accessTime to keep track of what was used when.
RemovedEntryEvent
A Cache entry removed event
TieredCache
Tiered implementation of the Cache interface allowing the assignement of a primary and secondary caches. It was designed to be used with a primary Cache bound to a fast CacheStore and a secondary cache bound to a persistent CacheStore implementation
TouchedExpiryPolicy
An ExpiryPolicy that defines the expiry Duration of a Cache Entry based on when it was last touched. A touch includes creation, update or access.
UpdatedEntryEvent
A Cache entry updated event

Enums

EntryEventType
The type of event received by the listener.
EventListenerMode

Constants

float32Size → const int
Size of a float32 in bytes
float64Size → const int
Size of a float64 in bytes
int16Size → const int
Size of a int16 in bytes
int32Size → const int
Size of a int32 in bytes
int64Size → const int
Size of a int64 in bytes
int8Size → const int
Size of a int8 in bytes
uint16Size → const int
Size of a uint16 in bytes
uint32Size → const int
Size of a uint32 in bytes
uint64Size → const int
Size of a uint64 in bytes
uint8Size → const int
Size of a uint8 in bytes

Functions

newTieredCache(Cache primary, Cache secondary) Cache
Creates a new TieredCache with a primary and secondary Cache instances

Typedefs

CacheLoader = Future Function(String key)
Cache loader function