mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
28f32c99d0
This is hiredis f225c276be7fd0646019b51023e3f41566633dfe This update includes all changes that diverged inside of Redis since the last update. This version also allows optional source address binding for connections which we need for some Sentinel deployments.
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;
|
|
}
|
|
|