redis - 如何在 C++ 中将 Pub/sub 与 hiredis 一起使用?

标签 redis

我正在尝试通过 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/

相关文章:

ruby-on-rails - 如果 Redis 关闭,则禁用 Rails 缓存

azure - 无法使用SSL通过Nginx实现与redis容器的安全连接

php - Laravel 5.6 降低 redis 队列性能

php - php redis中的diff b/w pset和psetx是什么?是否可以将数组设置为值?

Django 临时将其他数据库结果与 ORM 合并

c# - 如何设置容器以与 ServiceSTack.Redis 一起使用

django - 带有随 secret 码的Redis AUTH

php - 使用 Predis 查询 Redis 中的数组

java - 在 Java 中使用 Redis 异步命令对 void 方法进行单元测试

python - 是否可以检测 brpoplpush 何时发生并记录事件?