我正在尝试使用 Redis 发布/订阅通过创建通道来发送数据。问题是,即使发布了该消息,也没有收到该消息。我在这方面做错了什么?我该如何纠正它?我是 Rust 新手。
use redis::{Client, Commands, RedisError};
#[tokio::main]
async fn main() -> Result<(), RedisError> {
// Connect to Redis
let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_connection()?;
println!("Successfully connected to Redis!");
let channel = "mychannel";
let message = "hello";
con.publish(channel, message)?;
let mut pubsub = con.as_pubsub();
pubsub.subscribe("mychannel")?;
println!("subscribed to mychannel");
loop {
println!("waiting for message");
let msg = pubsub.get_message()?;
let payload: String = msg.get_payload()?;
println!("Received data on mychannel: {}", payload);
println!("got message");
}
}
显然在发布消息之前您需要
subscribe
。let mut pubsub = con.as_pubsub();
pubsub.subscribe("mychannel")?;
println!("subscribed to mychannel");
// now you can publish message
con.publish(channel, message)?;