pub struct TieredCache { /* private fields */ }Expand description
Multi-level cache with automatic promotion.
Checks tiers in order: Memory → Local → (Remote, future). On a hit in a lower tier, promotes the entry to faster tiers.
Implementations§
Source§impl TieredCache
impl TieredCache
Sourcepub fn new(tiers: Vec<(CacheTier, Box<dyn CacheStore>)>) -> Self
pub fn new(tiers: Vec<(CacheTier, Box<dyn CacheStore>)>) -> Self
Create a tiered cache from a list of (tier, store) pairs. Tiers should be ordered fastest-first.
Sourcepub fn memory_and_local(
memory: Box<dyn CacheStore>,
local: Box<dyn CacheStore>,
) -> Self
pub fn memory_and_local( memory: Box<dyn CacheStore>, local: Box<dyn CacheStore>, ) -> Self
Create a two-level cache: Memory + Local.
Trait Implementations§
Source§impl CacheStore for TieredCache
impl CacheStore for TieredCache
Source§fn get_located(&self, key: &CacheKey) -> Result<Option<(Value, CacheTier)>>
fn get_located(&self, key: &CacheKey) -> Result<Option<(Value, CacheTier)>>
Which tier answered is the number that says whether the slower tiers are earning their keep, so it is reported rather than flattened into “the cache was used”.
Source§fn get(&self, key: &CacheKey) -> Result<Option<Value>>
fn get(&self, key: &CacheKey) -> Result<Option<Value>>
Look up the value stored under
key, None on a miss.Source§fn put(&self, key: &CacheKey, value: &Value) -> Result<()>
fn put(&self, key: &CacheKey, value: &Value) -> Result<()>
Store
value under key, replacing any existing entry.Source§fn put_with_origin(
&self,
key: &CacheKey,
value: &Value,
origin: &Origin,
) -> Result<()>
fn put_with_origin( &self, key: &CacheKey, value: &Value, origin: &Origin, ) -> Result<()>
Store a value together with its provenance. Stores that persist
metadata should override this; the default discards the origin.
Source§fn exists(&self, key: &CacheKey) -> Result<bool>
fn exists(&self, key: &CacheKey) -> Result<bool>
Whether
key has an entry, without loading the value.Source§fn remove(&self, key: &CacheKey) -> Result<()>
fn remove(&self, key: &CacheKey) -> Result<()>
Delete the entry under
key; absent keys are not an error.Source§fn metadata(&self, key: &CacheKey) -> Result<Option<EntryMeta>>
fn metadata(&self, key: &CacheKey) -> Result<Option<EntryMeta>>
The entry’s
EntryMeta, without loading the value.Source§fn put_computed(
&self,
key: &CacheKey,
value: &Value,
origin: &Origin,
compute: Duration,
deterministic: bool,
) -> Result<(), SomaError>
fn put_computed( &self, key: &CacheKey, value: &Value, origin: &Origin, compute: Duration, deterministic: bool, ) -> Result<(), SomaError>
Store a freshly-computed value with its full provenance record:
origin, wall-clock compute cost, and the producer’s determinism
declaration. Cost-aware eviction needs the compute time — a tiny
value that took days must outlive a huge one that took seconds.
The default discards the extra metadata.
Auto Trait Implementations§
impl !RefUnwindSafe for TieredCache
impl !UnwindSafe for TieredCache
impl Freeze for TieredCache
impl Send for TieredCache
impl Sync for TieredCache
impl Unpin for TieredCache
impl UnsafeUnpin for TieredCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more