[−][src]Trait redis::PubSubCommands
The PubSub trait allows subscribing to one or more channels and receiving a callback whenever a message arrives.
Each method handles subscribing to the list of keys, waiting for messages, and unsubscribing from the same list of channels once a ControlFlow::Break is encountered.
Once (p)subscribe returns Ok(U), the connection is again safe to use for calling other methods.
Examples
use redis::{PubSubCommands, ControlFlow}; let client = redis::Client::open("redis://127.0.0.1/")?; let mut con = client.get_connection()?; let mut count = 0; con.subscribe(&["foo"], |msg| { // do something with message assert_eq!(msg.get_channel(), Ok(String::from("foo"))); // increment messages seen counter count += 1; match count { // stop after receiving 10 messages 10 => ControlFlow::Break(()), _ => ControlFlow::Continue, } });
Required methods
fn subscribe<'a, C, F, U>(&mut self, _: C, _: F) -> RedisResult<U> where
F: FnMut(Msg) -> ControlFlow<U>,
C: ToRedisArgs,
F: FnMut(Msg) -> ControlFlow<U>,
C: ToRedisArgs,
Subscribe to a list of channels using SUBSCRIBE and run the provided closure for each message received.
For every Msg
passed to the provided closure, either
ControlFlow::Break
or ControlFlow::Continue
must be returned. This
method will not return until ControlFlow::Break
is observed.
fn psubscribe<'a, P, F, U>(&mut self, _: P, _: F) -> RedisResult<U> where
F: FnMut(Msg) -> ControlFlow<U>,
P: ToRedisArgs,
F: FnMut(Msg) -> ControlFlow<U>,
P: ToRedisArgs,
Subscribe to a list of channels using PSUBSCRIBE and run the provided closure for each message received.
For every Msg
passed to the provided closure, either
ControlFlow::Break
or ControlFlow::Continue
must be returned. This
method will not return until ControlFlow::Break
is observed.
Implementors
impl PubSubCommands for Connection
[src]
fn subscribe<'a, C, F, U>(&mut self, channels: C, func: F) -> RedisResult<U> where
F: FnMut(Msg) -> ControlFlow<U>,
C: ToRedisArgs,
[src]
F: FnMut(Msg) -> ControlFlow<U>,
C: ToRedisArgs,
fn psubscribe<'a, P, F, U>(&mut self, patterns: P, func: F) -> RedisResult<U> where
F: FnMut(Msg) -> ControlFlow<U>,
P: ToRedisArgs,
[src]
F: FnMut(Msg) -> ControlFlow<U>,
P: ToRedisArgs,