pub struct RedisBackendBuilder { /* private fields */ }Expand description
Builder for RedisBackend.
Implementations§
Source§impl RedisBackendBuilder
impl RedisBackendBuilder
Sourcepub fn url(self, url: impl Into<String>) -> Self
pub fn url(self, url: impl Into<String>) -> Self
Set the Redis connection URL (required).
Accepts standard Redis URL formats, e.g. redis://localhost:6379 or
redis://:password@host:6379/0.
Sourcepub fn auto_reconnect(self) -> Self
pub fn auto_reconnect(self) -> Self
Automatically re-establish dropped connections with exponential backoff (100 ms → 30 s, retrying indefinitely). Off by default.
Also turns on fred’s unresponsive-connection check: a connection with a reply pending for longer than the command timeout is closed and re-established (fred checks every 2 s). Without a reconnect policy that check stays off, because a closed connection would never come back.
Initial connections still fail fast — fred’s fail_fast default stays
on, so the policy only governs reconnecting a connection that was
previously established. This is the policy CacheKit::production and
CacheKit::secure use. Call it when you build a backend yourself, for
example one backend shared by several clients through
CacheKitBuilder::backend, so it
recovers after a Redis restart instead of failing every operation.
use cachekit::backend::redis::RedisBackend;
let backend = RedisBackend::builder()
.url("redis://localhost:6379")
.auto_reconnect()
.build()?;
let _connection = backend.connect().await?;Sourcepub fn command_timeout(self, timeout: Duration) -> Self
pub fn command_timeout(self, timeout: Duration) -> Self
Deadline for each Redis command (default 5 s). A command past it fails
with BackendErrorKind::Timeout, and may still run on the server.
The budget is per attempt. When the reliability stack wraps the
backend (CacheKit::production, CacheKit::secure, or
CacheKitBuilder::reliability),
each retry gets a fresh budget, so with the default 3 attempts one
operation can take about three budgets plus backoff before it errors.
The stack sets no overall deadline for Redis. Each operation that ends
in a timeout counts as one failure toward opening the circuit breaker,
which a tokio::time::timeout around the call does not: a cancelled
call records no outcome. With auto_reconnect
the budget is also the unresponsive-connection threshold.
build rejects Duration::ZERO with CachekitError::Config; fred
reads zero as “no timeout”.
Sourcepub fn build(self) -> Result<RedisBackend, CachekitError>
pub fn build(self) -> Result<RedisBackend, CachekitError>
Consume the builder and construct a RedisBackend.
§Errors
Returns an error if url was not provided or is not a valid Redis URL,
or if the command timeout is zero. The connection itself is lazy — call RedisBackend::connect to establish it.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RedisBackendBuilder
impl RefUnwindSafe for RedisBackendBuilder
impl Send for RedisBackendBuilder
impl Sync for RedisBackendBuilder
impl Unpin for RedisBackendBuilder
impl UnsafeUnpin for RedisBackendBuilder
impl UnwindSafe for RedisBackendBuilder
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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