pub struct InMemoryCache<K, V, H = RandomState>where
K: Hash + Eq + Send + Sync + 'static,
V: Clone + Send + Sync + 'static,
H: BuildHasher + Clone + Send + Sync + 'static,{ /* private fields */ }Available on crate features
memory only.Expand description
A concurrent in-memory cache tier.
This cache provides:
- Concurrent access with high performance
- Automatic eviction based on capacity
- Thread-safe operations
§Examples
use cachet_memory::InMemoryCache;
use cachet_tier::{CacheEntry, CacheTier};
let cache = InMemoryCache::<String, i32>::new();
cache
.insert("key".to_string(), CacheEntry::new(42))
.await
.unwrap();
let value = cache.get(&"key".to_string()).await.unwrap();
assert_eq!(*value.unwrap().value(), 42);Implementations§
Source§impl<K, V> InMemoryCache<K, V>
impl<K, V> InMemoryCache<K, V>
Sourcepub fn new() -> InMemoryCache<K, V>
pub fn new() -> InMemoryCache<K, V>
Creates a new unbounded in-memory cache.
The cache will use default eviction policy (TinyLFU).
§Examples
use cachet_memory::InMemoryCache;
let cache = InMemoryCache::<String, i32>::new();Sourcepub fn with_max_capacity(max_capacity: u64) -> InMemoryCache<K, V>
pub fn with_max_capacity(max_capacity: u64) -> InMemoryCache<K, V>
Creates a new in-memory cache with a maximum capacity.
Once the capacity is reached, entries will be evicted using
the TinyLFU policy (combination of LRU eviction and LFU admission).
§Examples
use cachet_memory::InMemoryCache;
let cache = InMemoryCache::<String, i32>::with_max_capacity(1000);Sourcepub fn builder() -> InMemoryCacheBuilder<K, V>
pub fn builder() -> InMemoryCacheBuilder<K, V>
Creates a new builder for configuring an in-memory cache.
The builder provides access to additional configuration options such as time-to-live, time-to-idle, and initial capacity.
§Examples
use std::time::Duration;
use cachet_memory::InMemoryCache;
let cache = InMemoryCache::<String, i32>::builder()
.max_capacity(1000)
.time_to_live(Duration::from_secs(300))
.time_to_idle(Duration::from_secs(60))
.build();Trait Implementations§
Source§impl<K, V, H> CacheTier<K, V> for InMemoryCache<K, V, H>
impl<K, V, H> CacheTier<K, V> for InMemoryCache<K, V, H>
Source§async fn get(&self, key: &K) -> Result<Option<CacheEntry<V>>, Error>
async fn get(&self, key: &K) -> Result<Option<CacheEntry<V>>, Error>
Gets a value, returning an error if the operation fails.
Source§async fn insert(&self, key: K, entry: CacheEntry<V>) -> Result<(), Error>
async fn insert(&self, key: K, entry: CacheEntry<V>) -> Result<(), Error>
Inserts or replaces a value, returning an error if the operation fails. Read more
Source§async fn invalidate(&self, key: &K) -> Result<(), Error>
async fn invalidate(&self, key: &K) -> Result<(), Error>
Invalidates a value, returning an error if the operation fails.
Source§async fn clear(&self) -> Result<(), Error>
async fn clear(&self) -> Result<(), Error>
Clears all entries, returning an error if the operation fails.
Source§impl<K, V, H> Clone for InMemoryCache<K, V, H>
impl<K, V, H> Clone for InMemoryCache<K, V, H>
Source§fn clone(&self) -> InMemoryCache<K, V, H>
fn clone(&self) -> InMemoryCache<K, V, H>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<K, V, H> Debug for InMemoryCache<K, V, H>
impl<K, V, H> Debug for InMemoryCache<K, V, H>
Source§impl<K, V> Default for InMemoryCache<K, V>
impl<K, V> Default for InMemoryCache<K, V>
Source§fn default() -> InMemoryCache<K, V>
fn default() -> InMemoryCache<K, V>
Returns the “default value” for a type. Read more
Source§impl<K, V, H> ThreadAware for InMemoryCache<K, V, H>where
K: ThreadAware + Hash + Eq + Send + Sync + 'static,
V: ThreadAware + Clone + Send + Sync + 'static,
H: ThreadAware + BuildHasher + Clone + Send + Sync + 'static,
impl<K, V, H> ThreadAware for InMemoryCache<K, V, H>where
K: ThreadAware + Hash + Eq + Send + Sync + 'static,
V: ThreadAware + Clone + Send + Sync + 'static,
H: ThreadAware + BuildHasher + Clone + Send + Sync + 'static,
Auto Trait Implementations§
impl<K, V, H = RandomState> !RefUnwindSafe for InMemoryCache<K, V, H>
impl<K, V, H = RandomState> !UnwindSafe for InMemoryCache<K, V, H>
impl<K, V, H> Freeze for InMemoryCache<K, V, H>
impl<K, V, H> Send for InMemoryCache<K, V, H>
impl<K, V, H> Sync for InMemoryCache<K, V, H>
impl<K, V, H> Unpin for InMemoryCache<K, V, H>
impl<K, V, H> UnsafeUnpin for InMemoryCache<K, V, H>
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