我正在尝试通过 C++ 与 hiredis 客户端一起测试 redis 的发布/订阅功能。
我可以看到通过 redisCommand Api 订阅某个 channel 似乎很容易。
但是我想知道当有人发布到特定服务器时回复是如何返回的。
谢谢
最佳答案
https://github.com/redis/hiredis/issues/55 aluiken 于 2012 年 3 月 2 日发表评论
void onMessage(redisAsyncContext *c, void *reply, void *privdata) {
redisReply *r = reply;
if (reply == NULL) return;
if (r->type == REDIS_REPLY_ARRAY) {
for (int j = 0; j < r->elements; j++) {
printf("%u) %s\n", j, r->element[j]->str);
}
}
}
int main (int argc, char **argv) {
signal(SIGPIPE, SIG_IGN);
struct event_base *base = event_base_new();
redisAsyncContext *c = redisAsyncConnect("127.0.0.1", 6379);
if (c->err) {
printf("error: %s\n", c->errstr);
return 1;
}
redisLibeventAttach(c, base);
redisAsyncCommand(c, onMessage, NULL, "SUBSCRIBE testtopic");
event_base_dispatch(base);
return 0;
}
关于redis - 如何在 C++ 中将 Pub/sub 与 hiredis 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641741/