我想通过C++用hiredis客户端测试redis的pub/sub函数。如何在C++中使用pub/sub与hiredis?
我可以看到,订阅某个频道似乎很容易通过redisCommand Api来完成。
但是我想知道如何回复有人发布到某个服务器时回复。
谢谢
我想通过C++用hiredis客户端测试redis的pub/sub函数。如何在C++中使用pub/sub与hiredis?
我可以看到,订阅某个频道似乎很容易通过redisCommand Api来完成。
但是我想知道如何回复有人发布到某个服务器时回复。
谢谢
观察者模式是我们在Redis的pub/sub功能中看到的。
所有订阅者都是观察者,主题是发布者正在修改的频道。
当发布修改的信道即执行命令等的Redis-CLI>发布FOO值 这种变化由Redis的服务器传送到所有的观察者(即订户)
所以Redis的服务器具有用于所有观察者的列表中特定频道。
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;
}