Skip to main content

RedisCache

Struct RedisCache 

Source
pub struct RedisCache { /* private fields */ }
Expand description

Redis L1.5 distributed cache

Implementations§

Source§

impl RedisCache

Source

pub async fn new(redis_url: &str) -> Result<Self, RedisError>

Connect to Redis and create a new cache instance

Source

pub fn connection(&self) -> ConnectionManager

Returns a clone of the underlying Redis connection manager.

Cloning is cheap — ConnectionManager is backed by an Arc. Used by the rate-limit middleware to share the connection pool.

Source

pub async fn get(&self, namespace: &str, id: &str) -> Option<Vector>

Get a single vector from Redis

Source

pub async fn get_multi(&self, namespace: &str, ids: &[String]) -> Vec<Vector>

Get multiple vectors from Redis

Source

pub async fn set(&self, namespace: &str, vector: &Vector)

Store a single vector in Redis with TTL

Source

pub async fn set_batch(&self, namespace: &str, vectors: &[Vector])

Store multiple vectors in Redis using pipeline

Source

pub async fn delete(&self, namespace: &str, ids: &[String])

Delete specific vectors from Redis

Source

pub async fn invalidate_namespace(&self, namespace: &str)

Invalidate all entries for a namespace using SCAN + DEL

Source

pub async fn clear_all(&self)

Clear all buffer keys from Redis using SCAN + DEL

Source

pub async fn stats(&self) -> RedisCacheStats

Get Redis cache statistics from INFO command

Source

pub async fn publish_invalidation(&self, msg: &CacheInvalidation)

Publish a cache invalidation message via Redis pub/sub

Source

pub async fn publish_raw(&self, channel: &str, message: &str)

Publish a raw string message to any Redis channel. Used for backup cache invalidation and other cross-node signaling.

Source

pub async fn subscribe_raw( &self, channel: &str, ) -> Result<Receiver<String>, RedisError>

Subscribe to a Redis channel and return a receiver for raw string messages. Spawns a background task that listens for messages on the channel.

Source

pub async fn subscribe_invalidations<F>(&self, handler: F)
where F: FnMut(CacheInvalidation) + Send + 'static,

Subscribe to cache invalidation messages. This is a long-running async function that calls the handler for each message. Should be spawned as a background task.

Source

pub async fn try_acquire_lock( &self, key: &str, owner: &str, ttl_secs: u64, ) -> bool

Try to acquire a distributed lock via SET NX EX.

Returns true if the lock was acquired (this replica is the leader), false if another replica already holds it.

On Redis error (connection failure, timeout) returns true so callers gracefully degrade to in-process mode — the operation runs on every replica independently rather than not running at all. Callers MUST call release_lock after their critical section completes.

Source

pub async fn release_lock(&self, key: &str, owner: &str)

Release a distributed lock, but only if this replica still owns it.

Uses a Lua script for atomic check-and-delete.

Trait Implementations§

Source§

impl Clone for RedisCache

Source§

fn clone(&self) -> RedisCache

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RedisCache

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> MaybeSend for T
where T: Send,