hiredis 订阅发布

hiredis发布/订阅示例

 

转:https://blog.csdn.net/sahusoft/article/details/9428347

代码:

  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include <string.h>

  4. #include <signal.h>

  5. #include "hiredis.h"

  6. #include "async.h"

  7. #include "adapters/libevent.h"

  8.  
  9. void subCallback(redisAsyncContext *c, void *r, void *priv) {

  10. redisReply *reply = r;

  11. if (reply == NULL) return;

  12. if ( reply->type == REDIS_REPLY_ARRAY && reply->elements == 3 ) {

  13. if ( strcmp( reply->element[0]->str, "subscribe" ) != 0 ) {

  14. printf( "Received[%s] channel %s: %s\n",

  15. (char*)priv,

  16. reply->element[1]->str,

  17. reply->element[2]->str );

  18. }

  19. }

  20. }

  21.  
  22. void connectCallback(const redisAsyncContext *c, int status) {

  23. if (status != REDIS_OK) {

  24. printf("Error: %s\n", c->errstr);

  25. return;

  26. }

  27. printf("Connected...\n");

  28. }

  29.  
  30. void disconnectCallback(const redisAsyncContext *c, int status) {

  31. if (status != REDIS_OK) {

  32. printf("Error: %s\n", c->errstr);

  33. return;

  34. }

  35. printf("Disconnected...\n");

  36. }

  37.  
  38. int main (int argc, char **argv) {

  39. signal(SIGPIPE, SIG_IGN);

  40. struct event_base *base = event_base_new();

  41.  
  42. redisAsyncContext *c = redisAsyncConnect("127.0.0.1", 6379);

  43. if (c->err) {

  44. /* Let *c leak for now... */

  45. printf("Error: %s\n", c->errstr);

  46. return 1;

  47. }

  48.  
  49. redisLibeventAttach(c,base);

  50. redisAsyncSetConnectCallback(c,connectCallback);

  51. redisAsyncSetDisconnectCallback(c,disconnectCallback);

  52. redisAsyncCommand(c, subCallback, (char*) "sub", "SUBSCRIBE foo");

  53.  
  54. event_base_dispatch(base);

  55. return 0;

  56. }

 

编译:

gcc example-subpub.c libhiredis.a adapters/libevent.h -levent

 

测试:

订阅端

./a.out

发布端

./redis-cli PUBLISH foo bar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值