SentinelClient in redis::sentinel - Rust
Description: A utility wrapping `Sentinel` with an interface similar to Client.

Skip to main content

## SentinelClient

# Struct SentinelClient

Source

    pub struct SentinelClient { /* private fields */ }

Available on crate feature `sentinel` only.
Expand description

A utility wrapping `Sentinel` with an interface similar to Client.

Uses the Sentinel type internally. This is a utility to help make it easier to use sentinels but with an interface similar to the client (`get_connection` and `get_async_connection`). The type of server (master or replica) and name of the desired master are specified when constructing an instance, so it will always return connections to the same target (for example, always to the master with name “mymaster123”, or always to replicas of the master “another-master-abc”).

## Implementations§

Source§

### impl SentinelClient

Source

#### pub fn build<T: IntoConnectionInfo>( params: Vec<T>, service_name: impl AsRef<str>, node_connection_info: Option<SentinelNodeConnectionInfo>, server_type: SentinelServerType, ) -> RedisResult<Self>

Available on crate feature `tls-rustls` only.

Creates a SentinelClient performing some basic checks on the URLs that might result in an error.

Source

#### pub fn get_client(&mut self) -> RedisResult<Client>

Returns a `Client` considering the server type.

Source

#### pub fn get_sentinel_client(&mut self) -> RedisResult<Client>

Returns a `Client` connected to the first Sentinel node that responds successfully to `ROLE` with the expected value.

The function walks through the list supplied in `Sentinel::sentinels_connection_info`, trying each address in order:

1. Client::open attempts to build a client for that Sentinel.
2. We immediately issue `ROLE` to confirm the node is reachable and is a Setinel node.
3. The first node that passes both checks, the client is returned.

If none of the Sentinel addresses respond successfully or, an error occurs when establishing a connection, the method returns the appropriate error.

Use this client when you need Sentinel-specific features—e.g. subscribing to `+switch-master` Pub/Sub events or running topology queries—rather than talking to the Redis master itself.

Source

#### pub fn get_connection(&mut self) -> RedisResult<Connection>

Creates a new connection to the desired type of server (based on the service/master name, and the server type). We use a Sentinel to create a client for the target type of server, and then create a connection using that client.

Source§

### impl SentinelClient

To enable async support you need to chose one of the supported runtimes and active its corresponding feature: `tokio-comp` or `smol-comp`

Source

#### pub async fn async_get_client(&mut self) -> RedisResult<Client>

Available on crate feature `aio` only.

Returns a `Client` considering the server type.

Source

#### pub async fn async_get_sentinel_client(&mut self) -> RedisResult<Client>

Available on crate feature `aio` only.

Returns a `Client` connected to the first Sentinel node that responds successfully to `ROLE` with the expected value.

The function walks through the list supplied in `Sentinel::sentinels_connection_info`, trying each address in order:

1. `Client::open` attempts to build a client for that Sentinel.
2. We immediately issue `ROLE` to confirm the node is reachable and is a Setinel node.
3. The first node that passes both checks, the client is returned.

If none of the Sentinel addresses respond successfully or, an error occurs when establishing a connection, the method returns the appropriate error.

Use this client when you need Sentinel-specific features—e.g. subscribing to `+switch-master` Pub/Sub events or running topology queries—rather than talking to the Redis master itself.

Source

#### pub async fn get_async_connection(&mut self) -> RedisResult<AsyncConnection>

Available on crate feature `aio` only.

Returns an async connection from the client, using the same logic from `SentinelClient::get_connection`.

Source

#### pub async fn get_async_connection_with_config( &mut self, config: &AsyncConnectionConfig, ) -> RedisResult<AsyncConnection>

Available on crate feature `aio` only.

Returns an async connection from the client with options, using the same logic from `SentinelClient::get_connection`.

## Auto Trait Implementations§

§

### impl Freeze for SentinelClient

§

### impl !RefUnwindSafe for SentinelClient

§

### impl Send for SentinelClient

§

### impl Sync for SentinelClient

§

### impl Unpin for SentinelClient

§

### impl !UnwindSafe for SentinelClient

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