Struct MemoryCache

Source
pub struct MemoryCache<K: Hash, T: Clone> { /* private fields */ }
Expand description

A high performant in-memory cache with S3-FIFO + TinyLFU

Implementations§

Source§

impl<K: Hash, T: Clone + Send + Sync + 'static> MemoryCache<K, T>

Source

pub fn new(size: usize) -> Self

Create a new MemoryCache with the given size.

Source

pub fn get<Q>(&self, key: &Q) -> (Option<T>, CacheStatus)
where K: Borrow<Q>, Q: Hash + ?Sized,

Fetch the key and return its value in addition to a CacheStatus.

Source

pub fn get_stale<Q>(&self, key: &Q) -> (Option<T>, CacheStatus)
where K: Borrow<Q>, Q: Hash + ?Sized,

Similar to Self::get, fetch the key and return its value in addition to a CacheStatus but also return the value even if it is expired. When the value is expired, the Duration of how long it has been stale will also be returned.

Source

pub fn put<Q>(&self, key: &Q, value: T, ttl: Option<Duration>)
where K: Borrow<Q>, Q: Hash + ?Sized,

Insert a key and value pair with an optional TTL into the cache.

An item with zero TTL of zero will not be inserted.

Source

pub fn remove<Q>(&self, key: &Q)
where K: Borrow<Q>, Q: Hash + ?Sized,

Remove a key from the cache if it exists.

Source

pub fn multi_get<'a, I, Q>(&self, keys: I) -> Vec<(Option<T>, CacheStatus)>
where I: Iterator<Item = &'a Q>, Q: Hash + ?Sized + 'a, K: Borrow<Q> + 'a,

This is equivalent to MemoryCache::get but for an arbitrary amount of keys.

Source

pub fn multi_get_with_miss<'a, I, Q>( &self, keys: I, ) -> (Vec<(Option<T>, CacheStatus)>, Vec<&'a Q>)
where I: Iterator<Item = &'a Q>, Q: Hash + ?Sized + 'a, K: Borrow<Q> + 'a,

Same as MemoryCache::multi_get but returns the keys that are missing from the cache.

Auto Trait Implementations§

§

impl<K, T> !Freeze for MemoryCache<K, T>

§

impl<K, T> !RefUnwindSafe for MemoryCache<K, T>

§

impl<K, T> Send for MemoryCache<K, T>
where K: Send, T: Send + Sync,

§

impl<K, T> Sync for MemoryCache<K, T>
where K: Sync, T: Sync + Send,

§

impl<K, T> Unpin for MemoryCache<K, T>
where K: Unpin, T: Unpin,

§

impl<K, T> !UnwindSafe for MemoryCache<K, T>

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

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.