Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Hiredis menunggu pesan

Anda tidak perlu memberi tahu yang disewa bahwa Anda harus menunggu di saluran:loop acara hanya akan menunggu pada koneksi Redis yang telah terdaftar sebelumnya.

Berikut ini contoh lengkapnya:

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

Anda dapat mengujinya hanya dengan menggunakan perintah berikut untuk mempublikasikan sesuatu:

redis-cli publish foo something

Fungsi event_base_dispatch adalah fungsi yang benar-benar meluncurkan loop peristiwa, dan membuatnya menunggu langganan Redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. pekerja python-rq menutup secara otomatis

  2. Jumlah kunci kedaluwarsa yang tercantum oleh perintah info pada redis slave tidak konsisten dengan apa yang saya lihat

  3. Redis, kedaluwarsa sesi, dan pencarian terbalik

  4. Cara mendapatkan semua Kunci dari Redis menggunakan template redis

  5. Tidak dapat terhubung ke Redis di 10.XX.XX.28:6379:Kesalahan tidak diketahui - saat mengakses dari Spring Batch atau mesin windows