本文主要是介绍hiredis发布/订阅示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include "hiredis.h"
#include "async.h"
#include "adapters/libevent.h"void subCallback(redisAsyncContext *c, void *r, void *priv) {redisReply *reply = r;if (reply == NULL) return;if ( reply->type == REDIS_REPLY_ARRAY && reply->elements == 3 ) {if ( strcmp( reply->element[0]->str, "subscribe" ) != 0 ) {printf( "Received[%s] channel %s: %s\n",(char*)priv,reply->element[1]->str,reply->element[2]->str );}}
}void connectCallback(const redisAsyncContext *c, int status) {if (status != REDIS_OK) {printf("Error: %s\n", c->errstr);return;}printf("Connected...\n");
}void disconnectCallback(const redisAsyncContext *c, int status) {if (status != REDIS_OK) {printf("Error: %s\n", c->errstr);return;}printf("Disconnected...\n");
}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) {/* Let *c leak for now... */printf("Error: %s\n", c->errstr);return 1;}redisLibeventAttach(c,base);redisAsyncSetConnectCallback(c,connectCallback);redisAsyncSetDisconnectCallback(c,disconnectCallback);redisAsyncCommand(c, subCallback, (char*) "sub", "SUBSCRIBE foo");event_base_dispatch(base);return 0;
}
编译:
gcc example-subpub.c libhiredis.a adapters/libevent.h -levent
测试:
订阅端
./a.out
发布端
./redis-cli PUBLISH foo bar
这篇关于hiredis发布/订阅示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!