mirror of https://github.com/redis/redis.git
				
				
				
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <signal.h>
 | 
						|
 | 
						|
#include <hiredis.h>
 | 
						|
#include <async.h>
 | 
						|
#include <adapters/ae.h>
 | 
						|
 | 
						|
/* Put event loop in the global scope, so it can be explicitly stopped */
 | 
						|
static aeEventLoop *loop;
 | 
						|
 | 
						|
void getCallback(redisAsyncContext *c, void *r, void *privdata) {
 | 
						|
    redisReply *reply = r;
 | 
						|
    if (reply == NULL) return;
 | 
						|
    printf("argv[%s]: %s\n", (char*)privdata, reply->str);
 | 
						|
 | 
						|
    /* Disconnect after receiving the reply to GET */
 | 
						|
    redisAsyncDisconnect(c);
 | 
						|
}
 | 
						|
 | 
						|
void connectCallback(const redisAsyncContext *c, int status) {
 | 
						|
    if (status != REDIS_OK) {
 | 
						|
        printf("Error: %s\n", c->errstr);
 | 
						|
        aeStop(loop);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    printf("Connected...\n");
 | 
						|
}
 | 
						|
 | 
						|
void disconnectCallback(const redisAsyncContext *c, int status) {
 | 
						|
    if (status != REDIS_OK) {
 | 
						|
        printf("Error: %s\n", c->errstr);
 | 
						|
        aeStop(loop);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    printf("Disconnected...\n");
 | 
						|
    aeStop(loop);
 | 
						|
}
 | 
						|
 | 
						|
int main (int argc, char **argv) {
 | 
						|
    signal(SIGPIPE, SIG_IGN);
 | 
						|
 | 
						|
    redisAsyncContext *c = redisAsyncConnect("127.0.0.1", 6379);
 | 
						|
    if (c->err) {
 | 
						|
        /* Let *c leak for now... */
 | 
						|
        printf("Error: %s\n", c->errstr);
 | 
						|
        return 1;
 | 
						|
    }
 | 
						|
 | 
						|
    loop = aeCreateEventLoop(64);
 | 
						|
    redisAeAttach(loop, c);
 | 
						|
    redisAsyncSetConnectCallback(c,connectCallback);
 | 
						|
    redisAsyncSetDisconnectCallback(c,disconnectCallback);
 | 
						|
    redisAsyncCommand(c, NULL, NULL, "SET key %b", argv[argc-1], strlen(argv[argc-1]));
 | 
						|
    redisAsyncCommand(c, getCallback, (char*)"end-1", "GET key");
 | 
						|
    aeMain(loop);
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 |