ConnectionManagerConfig in redis::aio - Rust
Description: The configuration for reconnect mechanism and request timing for the ConnectionManager

Skip to main content

## ConnectionManagerConfig

# Struct ConnectionManagerConfig

Source

    pub struct ConnectionManagerConfig { /* private fields */ }

Available on crate features `aio` and `connection-manager` only.
Expand description

The configuration for reconnect mechanism and request timing for the ConnectionManager

## Implementations§

Source§

### impl ConnectionManagerConfig

Source

#### pub fn new() -> Self

Creates a new instance of the options with nothing set

Source

#### pub fn min_delay(&self) -> Duration

Returns the minimum delay between connection attempts.

Source

#### pub fn max_delay(&self) -> Option<Duration>

Returns the maximum delay between connection attempts.

Source

#### pub fn exponent_base(&self) -> f32

Returns the base used for calculating the exponential backoff between retries.

Source

#### pub fn number_of_retries(&self) -> usize

Returns the maximum number of connection retry attempts.

Source

#### pub fn response_timeout(&self) -> Option<Duration>

Returns the timeout applied to command responses.

If `None`, responses do not time out.

Source

#### pub fn connection_timeout(&self) -> Option<Duration>

Returns the timeout applied to establishing a new connection.

If `None`, connection attempts to do not time out.

Source

#### pub fn automatic_resubscription(&self) -> bool

Returns `true` if automatic resubscription is enabled after reconnecting.

Source

#### pub fn cache_config(&self) -> Option<&CacheConfig>

Available on crate feature `cache-aio` only.

Returns the current cache configuration, if caching is enabled.

Source

#### pub fn set_min_delay(self, min_delay: Duration) -> ConnectionManagerConfig

Set the minimal delay for reconnect attempts.

Source

#### pub fn set_max_delay(self, time: Duration) -> ConnectionManagerConfig

Apply a maximum delay between connection attempts. The delay between attempts won’t be longer than max_delay milliseconds.

Source

#### pub fn set_exponent_base(self, base: f32) -> ConnectionManagerConfig

The resulting duration is calculated by taking the base to the `n`-th power, where `n` denotes the number of past attempts.

Source

#### pub fn set_number_of_retries(self, amount: usize) -> ConnectionManagerConfig

number_of_retries times, with an exponentially increasing delay.

Source

#### pub fn set_response_timeout( self, duration: Option<Duration>, ) -> ConnectionManagerConfig

The new connection will time out operations after `response_timeout` has passed.

Set `None` if you don’t want requests to time out.

Source

#### pub fn set_connection_timeout( self, duration: Option<Duration>, ) -> ConnectionManagerConfig

Each connection attempt to the server will time out after `connection_timeout`.

Set `None` if you don’t want the connection attempt to time out.

Source

#### pub fn set_push_sender(self, sender: impl AsyncPushSender) -> Self

Sets sender sender for push values.

The sender can be a channel, or an arbitrary function that handles crate::PushInfo values. This will fail client creation if the connection isn’t configured for RESP3 communications via the crate::RedisConnectionInfo::set_protocol function.

##### §Examples

    let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel();
    let config = ConnectionManagerConfig::new().set_push_sender(tx);

    let messages = Arc::new(Mutex::new(Vec::new()));
    let config = ConnectionManagerConfig::new().set_push_sender(move |msg|{
        let Ok(mut messages) = messages.lock() else {
            return Err(redis::aio::SendError);
        };
        messages.push(msg);
        Ok(())
    });

Source

#### pub fn set_automatic_resubscription(self) -> Self

Configures the connection manager to automatically resubscribe to all pubsub channels after reconnecting.

Source

#### pub fn set_cache_config(self, cache_config: CacheConfig) -> Self

Available on crate feature `cache-aio` only.

Set the cache behavior.

Source

#### pub fn set_pipeline_buffer_size(self, size: usize) -> Self

Sets the buffer size for the internal pipeline channel.

The multiplexed connection uses an internal channel to queue Redis commands before sending them to the server. This setting controls how many commands can be buffered in that channel.

When the buffer is full, callers will asynchronously wait until space becomes available. A larger buffer allows more commands to be queued during bursts of activity, reducing wait time for callers. However, this comes at the cost of increased memory usage.

The default value is 50. Consider increasing this value for high-concurrency scenarios (e.g., web servers handling many simultaneous requests) where buffer contention may increase overall latency and cause upstream timeouts.

## Trait Implementations§

Source§

### impl Clone for ConnectionManagerConfig

Source§

#### fn clone(&self) -> ConnectionManagerConfig

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 ConnectionManagerConfig

Source§

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

Formats the value using the given formatter. Read more
Source§

### impl Default for ConnectionManagerConfig

Source§

#### fn default() -> Self

Returns the “default value” for a type. Read more

## Auto Trait Implementations§

§

### impl Freeze for ConnectionManagerConfig

§

### impl !RefUnwindSafe for ConnectionManagerConfig

§

### impl Send for ConnectionManagerConfig

§

### impl Sync for ConnectionManagerConfig

§

### impl Unpin for ConnectionManagerConfig

§

### impl !UnwindSafe for ConnectionManagerConfig

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

Source§

#### fn __clone_box(&self, _: Private) -> *mut ()

Source§

### impl<T> From<T> for T

Source§

#### fn from(t: T) -> T

Returns the argument unchanged.

§

### impl<T> Instrument for T

§

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

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

#### 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.

§

### impl<T> PolicyExt for T
where T: ?Sized,

§

#### 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
§

#### 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> 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.
§

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

§

#### fn vzip(self) -> V

§

### impl<T> WithSubscriber for T

§

#### 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
§

#### fn with_current_subscriber(self) -> WithDispatch<Self>

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

### impl<T> ErasedDestructor for T
where T: 'static,

§

### impl<T> MaybeSendSync for T