|
- #include "hiredis.h"
-
- void dumpReply(redisReply *r, int indent) {
- sds buffer = sdsempty();
-
- switch (r->type) {
- case REDIS_REPLY_STRING:
- buffer = sdscatfmt(buffer, "(string) %s\n", r->str);
- break;
- case REDIS_REPLY_STATUS:
- buffer = sdscatfmt(buffer, "(status) %s\n", r->str);
- break;
- case REDIS_REPLY_INTEGER:
- buffer = sdscatlen(buffer, "(integer) %lld\n", r->integer);
- break;
- case REDIS_REPLY_NIL:
- buffer = sdscatlen(buffer, "(nill)\n", 7);
- break;
- case REDIS_REPLY_ERROR:
- buffer = sdscatfmt(buffer, " (error) %s", r->str);
- break;
- case REDIS_REPLY_ARRAY:
- for (size_t i = 0; i < r->elements; i++) {
- dumpReply(r->element[i], indent + 2);
- }
- break;
- default:
- return;
- // dbg_abort("Don't know how to deal with reply type %d", r->type);
- }
-
- if (sdslen(buffer) > 0) {
- for (int i = 0; i < indent; i++)
- printf(" ");
-
- printf("%s", buffer);
- }
-
- sdsfree(buffer);
- }
- int main() {
- redisContext *c;
- redisReply *reply;
-
- // Connect to Redis server
- c = redisConnect("127.0.0.1", 6379);
- if (c->err) {
- printf("Error 0: %s\n", c->errstr);
- return 1;
- }
- // Authenticate if necessary
- reply = redisCommand(c, "AUTH %s", "1qazxsw2$$");
- freeReplyObject(reply);
-
- // Read from the stream
- char commandStr[100] = "XREADGROUP GROUP sampleGroup NOACK STREAMS sampleStream >";
- printf("command: %s\n",commandStr);
- reply = redisCommand(c, commandStr);
- printf("reply->type =>%d\n",reply->type);
- dumpReply(reply,0);
- // if (reply->type == REDIS_REPLY_ARRAY) {
- // printf("reply->elements: %ld\n",reply->elements);
- // for(int i = 0; i < reply->elements; i++) {
- // redisReply *element = reply->element[i];
- // printf("read from redis: %s\n", reply->str);
- // }
- // }
-
- // Don't forget to free the reply object when you're done with it
- freeReplyObject(reply);
-
- // Disconnect from the Redis server
- redisFree(c);
-
- return 0;
- }
|