pub struct CachingSessionStore<Cache, Store>where
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, Store> CachingSessionStore<Cache, Store>where
Cache: SessionStore,
Store: SessionStore,
impl<Cache, Store> CachingSessionStore<Cache, Store>where
Cache: SessionStore,
Store: SessionStore,
Sourcepub fn new(cache: Cache, store: Store) -> CachingSessionStore<Cache, Store>
pub fn new(cache: Cache, store: Store) -> CachingSessionStore<Cache, Store>
Create a new CachingSessionStore.
Trait Implementationsยง
Sourceยงimpl<Cache, Store> Clone for CachingSessionStore<Cache, Store>
impl<Cache, Store> 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, Store> Debug for CachingSessionStore<Cache, Store>
impl<Cache, Store> 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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
fn create<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 mut Record,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: '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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
record: &'life1 Record,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: '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>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
fn load<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 Id,
) -> Pin<Box<dyn Future<Output = Result<Option<Record>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
Loads an existing session record from the store using the provided ID. Read more
Sourceยงfn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 Id,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 Id,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
CachingSessionStore<Cache, Store>: 'async_trait,
Deletes a 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