PubSub in redis::aio - Rust
Description: A connection dedicated to RESP2 pubsub messages.

Skip to main content

## PubSub

# Struct PubSub

Source

    pub struct PubSub { /* private fields */ }

Available on crate feature `aio` only.
Expand description

A connection dedicated to RESP2 pubsub messages.

If you’re using a DB that supports RESP3, consider using a regular connection and setting a crate::aio::AsyncPushSender on it using crate::client::AsyncConnectionConfig::set_push_sender.

## Implementations§

Source§

### impl PubSub

Source

#### pub async fn new<C>( connection_info: &RedisConnectionInfo, stream: C, ) -> RedisResult<Self>
where C: Unpin + AsyncRead + AsyncWrite + Send + 'static,

Constructs a new `MultiplexedConnection` out of a `AsyncRead + AsyncWrite` object and a `ConnectionInfo`

Source

#### pub async fn subscribe( &mut self, channel_name: impl ToRedisArgs, ) -> RedisResult<()>

Subscribes to a new channel(s).

    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut pubsub = client.get_async_pubsub().await?;
    pubsub.subscribe("channel_1").await?;
    pubsub.subscribe(&["channel_2", "channel_3"]).await?;

Source

#### pub async fn unsubscribe( &mut self, channel_name: impl ToRedisArgs, ) -> RedisResult<()>

Unsubscribes from channel(s).

    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut pubsub = client.get_async_pubsub().await?;
    pubsub.subscribe(&["channel_1", "channel_2"]).await?;
    pubsub.unsubscribe(&["channel_1", "channel_2"]).await?;

Source

#### pub async fn psubscribe( &mut self, channel_pattern: impl ToRedisArgs, ) -> RedisResult<()>

Subscribes to new channel(s) with pattern(s).

    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut pubsub = client.get_async_pubsub().await?;
    pubsub.psubscribe("channel*_1").await?;
    pubsub.psubscribe(&["channel*_2", "channel*_3"]).await?;

Source

#### pub async fn punsubscribe( &mut self, channel_pattern: impl ToRedisArgs, ) -> RedisResult<()>

Unsubscribes from channel pattern(s).

    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut pubsub = client.get_async_pubsub().await?;
    pubsub.psubscribe(&["channel_1", "channel_2"]).await?;
    pubsub.punsubscribe(&["channel_1", "channel_2"]).await?;

Source

#### pub async fn ping<T: FromRedisValue>(&mut self) -> RedisResult<T>

Sends a ping to the server

Source

#### pub async fn ping_message<T: FromRedisValue>( &mut self, message: impl ToRedisArgs, ) -> RedisResult<T>

Sends a ping with a message to the server

Source

#### pub fn on_message(&mut self) -> impl Stream<Item = Msg> + '_

Returns [`Stream`] of `Msg`s from this `PubSub`s subscriptions.

The message itself is still generic and can be converted into an appropriate type through the helper methods on it.

Source

#### pub fn into_on_message(self) -> PubSubStream

Returns [`Stream`] of `Msg`s from this `PubSub`s subscriptions consuming it.

The message itself is still generic and can be converted into an appropriate type through the helper methods on it. This can be useful in cases where the stream needs to be returned or held by something other than the `PubSub`.

Source

#### pub fn split(self) -> (PubSubSink, PubSubStream)

Splits the PubSub into separate sink and stream components, so that subscriptions could be updated through the `Sink` while concurrently waiting for new messages on the `Stream`.

## Auto Trait Implementations§

§

### impl Freeze for PubSub

§

### impl RefUnwindSafe for PubSub

§

### impl Send for PubSub

§

### impl Sync for PubSub

§

### impl Unpin for PubSub

§

### impl UnwindSafe for PubSub

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