Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

संदेश की प्रतीक्षा में हिरेडिस

आपको काम पर रखने वालों को यह बताने की ज़रूरत नहीं है कि आपको चैनल पर प्रतीक्षा करने की आवश्यकता है:इवेंट लूप केवल रेडिस कनेक्शन पर प्रतीक्षा करेगा जो पहले पंजीकृत किया गया है।

यहां एक पूरा उदाहरण दिया गया है:

#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;
}

आप कुछ प्रकाशित करने के लिए निम्न कमांड का उपयोग करके इसका परीक्षण कर सकते हैं:

redis-cli publish foo something

इवेंट_बेस_डिस्पैच फ़ंक्शन वह है जो वास्तव में इवेंट लूप लॉन्च करता है, और इसे रेडिस सदस्यता पर प्रतीक्षा करता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. समय सीमा के साथ मोंगोडब चौराहा

  2. रेडिस को Azure पर कैसे चलाना है?

  3. Nestjs redis microservice का उपयोग कैसे करें?

  4. स्प्रिंग या स्प्रिंग बूट के साथ रेडिस का उपयोग करते समय डिफ़ॉल्ट कैश रणनीति क्या है?

  5. रेडिस डेटा स्ट्रक्चर का परिचय:सॉर्ट किए गए सेट