Trait redis_driver::PubSubCommands
source · pub trait PubSubCommands {
fn psubscribe<'a, P, PP>(
&'a mut self,
patterns: PP
) -> Future<'a, PubSubStream>
where
P: Into<BulkString> + Send + 'a,
PP: SingleArgOrCollection<P>;
fn subscribe<'a, C, CC>(
&'a mut self,
channels: CC
) -> Future<'a, PubSubStream>
where
C: Into<BulkString> + Send + 'a,
CC: SingleArgOrCollection<C>;
fn publish<C, M>(
&mut self,
channel: C,
message: M
) -> PreparedCommand<'_, Self, usize>
where
Self: Sized,
C: Into<BulkString>,
M: Into<BulkString>,
{ ... }
fn pub_sub_channels<C, CC>(
&mut self,
options: PubSubChannelsOptions
) -> PreparedCommand<'_, Self, CC>
where
Self: Sized,
C: FromValue,
CC: FromSingleValueArray<C>,
{ ... }
fn pub_sub_numpat(&mut self) -> PreparedCommand<'_, Self, usize>
where
Self: Sized,
{ ... }
fn pub_sub_numsub<C, CC, R, RR>(
&mut self,
channels: CC
) -> PreparedCommand<'_, Self, RR>
where
Self: Sized,
C: Into<BulkString>,
CC: SingleArgOrCollection<C>,
R: FromValue,
RR: FromKeyValueValueArray<R, usize>,
{ ... }
}
Expand description
Required Methods
sourcefn psubscribe<'a, P, PP>(&'a mut self, patterns: PP) -> Future<'a, PubSubStream>where
P: Into<BulkString> + Send + 'a,
PP: SingleArgOrCollection<P>,
fn psubscribe<'a, P, PP>(&'a mut self, patterns: PP) -> Future<'a, PubSubStream>where
P: Into<BulkString> + Send + 'a,
PP: SingleArgOrCollection<P>,
Subscribes the client to the given patterns.
Example
use redis_driver::{
resp::cmd, Client, ClientPreparedCommand, FlushingMode,
PubSubCommands, ServerCommands, Result
};
use futures::StreamExt;
#[tokio::main]
async fn main() -> Result<()> {
let mut pub_sub_client = Client::connect("127.0.0.1:6379").await?;
let mut regular_client = Client::connect("127.0.0.1:6379").await?;
regular_client.flushdb(FlushingMode::Sync).await?;
let mut pub_sub_stream = pub_sub_client.psubscribe("mychannel*").await?;
regular_client.publish("mychannel1", "mymessage").await?;
let (pattern, channel, message): (String, String, String) = pub_sub_stream
.next()
.await
.unwrap()?
.into()?;
assert_eq!("mychannel*", pattern);
assert_eq!("mychannel1", channel);
assert_eq!("mymessage", message);
pub_sub_stream.close().await?;
Ok(())
}
See Also
sourcefn subscribe<'a, C, CC>(&'a mut self, channels: CC) -> Future<'a, PubSubStream>where
C: Into<BulkString> + Send + 'a,
CC: SingleArgOrCollection<C>,
fn subscribe<'a, C, CC>(&'a mut self, channels: CC) -> Future<'a, PubSubStream>where
C: Into<BulkString> + Send + 'a,
CC: SingleArgOrCollection<C>,
Subscribes the client to the specified channels.
Example
use redis_driver::{
resp::cmd, Client, ClientPreparedCommand, FlushingMode,
PubSubCommands, ServerCommands, Result
};
use futures::StreamExt;
#[tokio::main]
async fn main() -> Result<()> {
let mut pub_sub_client = Client::connect("127.0.0.1:6379").await?;
let mut regular_client = Client::connect("127.0.0.1:6379").await?;
regular_client.flushdb(FlushingMode::Sync).await?;
let mut pub_sub_stream = pub_sub_client.subscribe("mychannel").await?;
regular_client.publish("mychannel", "mymessage").await?;
let (channel, message): (String, String) = pub_sub_stream
.next()
.await
.unwrap()?
.into()?;
assert_eq!("mychannel", channel);
assert_eq!("mymessage", message);
pub_sub_stream.close().await?;
Ok(())
}