pub struct CachingSessionStore<Cache: SessionStore, Store: SessionStore> { /* private fields */ }
Expand description
Provides a layered caching mechanism with a cache as the frontend and a store as the backend..
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;
use tower_sessions_moka_store::MokaStore;
use tower_sessions_sqlx_store::{SqlitePool, SqliteStore};
let pool = SqlitePool::connect("sqlite::memory:").await.unwrap();
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 duplicate 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 create<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 mut Record,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 mut Record,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates a new session in the store with the provided session record. Read more
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,
Saves the provided session record to the store. Read more
Source§fn load<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 Id,
) -> Pin<Box<dyn Future<Output = Result<Option<Record>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 Id,
) -> Pin<Box<dyn Future<Output = Result<Option<Record>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Loads an existing session record from the store using the provided ID. Read more
Auto Trait Implementations§
impl<Cache, Store> Freeze for CachingSessionStore<Cache, Store>
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