Skip to main content

TieredCache

Struct TieredCache 

Source
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

Source

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.

Source

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

Source§

fn tier(&self) -> CacheTier

The fastest tier — what a caller reaches first.

Source§

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>>

Look up the value stored under key, None on a miss.
Source§

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<()>

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>

Whether key has an entry, without loading the value.
Source§

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>>

The entry’s [EntryMeta], without loading the value.
§

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§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

The receiver as &dyn Any, ready for downcast_ref.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more