Struct tower_sessions_core::CachingSessionStore
source · pub struct CachingSessionStore<Cache: SessionStore, Store: SessionStore> { /* private fields */ }Expand description
A session store for layered caching.
Contains both a cache, which acts as a frontend, and a store which acts as a
backend. Both cache and store implement SessionStore.
By using a cache, the cost of reads can be greatly reduced as once cached, reads need only interact with the frontend, forgoing the cost of retrieving the session record from the backend.
Examples
use tower_sessions::{CachingSessionStore, MokaStore, SqlitePool, SqliteStore};
let pool = SqlitePool::connect("sqlite::memory:").await?;
let sqlite_store = SqliteStore::new(pool);
let moka_store = MokaStore::new(Some(2_000));
let caching_store = CachingSessionStore::new(moka_store, sqlite_store);Implementations§
source§impl<Cache: SessionStore, Store: SessionStore> CachingSessionStore<Cache, Store>
impl<Cache: SessionStore, Store: SessionStore> CachingSessionStore<Cache, Store>
Trait Implementations§
source§impl<Cache: Clone + SessionStore, Store: Clone + SessionStore> Clone for CachingSessionStore<Cache, Store>
impl<Cache: Clone + SessionStore, Store: Clone + SessionStore> Clone for CachingSessionStore<Cache, Store>
source§fn clone(&self) -> CachingSessionStore<Cache, Store>
fn clone(&self) -> CachingSessionStore<Cache, Store>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl<Cache: Debug + SessionStore, Store: Debug + SessionStore> Debug for CachingSessionStore<Cache, Store>
impl<Cache: Debug + SessionStore, Store: Debug + SessionStore> Debug for CachingSessionStore<Cache, Store>
source§impl<Cache, Store> SessionStore for CachingSessionStore<Cache, Store>where
Cache: SessionStore,
Store: SessionStore,
impl<Cache, Store> SessionStore for CachingSessionStore<Cache, Store>where
Cache: SessionStore,
Store: SessionStore,
source§fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 Record
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 Record
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A method for saving a session in a store.
Auto Trait Implementations§
impl<Cache, Store> RefUnwindSafe for CachingSessionStore<Cache, Store>where
Cache: RefUnwindSafe,
Store: RefUnwindSafe,
impl<Cache, Store> Send for CachingSessionStore<Cache, Store>
impl<Cache, Store> Sync for CachingSessionStore<Cache, Store>
impl<Cache, Store> Unpin for CachingSessionStore<Cache, Store>
impl<Cache, Store> UnwindSafe for CachingSessionStore<Cache, Store>where
Cache: UnwindSafe,
Store: UnwindSafe,
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