hiredis之異步調(diào)用

下面是 hiredis 異步調(diào)用使用的一個例子(算是對于官方簡單例子的一個補充葬凳,可能長得更像實際業(yè)務(wù)中使用的樣子)膨疏,一般使用場景是我們監(jiān)聽一個端口讼油,當(dāng)有請求來的時候厅翔,就執(zhí)行回調(diào)又活,而回調(diào)里面可能需要讀寫 Redis。(涉及 IO 的操作都需要異步處理C痰俊)

#include <hiredis/hiredis.h>
#include <hiredis/adapters/libevent.h>
#include <sys/socket.h>

void do_accept(evutil_socket_t listener, short event, void *arg) {
    redisAsyncContext *ac = (redisAsyncContext *)arg;
    evutil_socket_t fd;
    struct sockaddr_in sin;
    socklen_t slen = sizeof(sin);
    fd = accept(listener, (struct sockaddr *)&sin, &slen);
    if (fd < 0) {
        perror("[ERROR] accept error");
        return;
    }
    redisAsyncCommand(ac, NULL, NULL, "SET key test");
}
int main() {
    signal(SIGPIPE, SIG_IGN);
    struct event_base *base = event_base_new();

    /* 創(chuàng)建套接字 */
    int listenfd;
    struct sockaddr_in servaddr;
    if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        printf("[ERROR] socket error");
        exit(-1);
    }

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(17777);

    bind(listenfd, (const struct sockaddr*) &servaddr, sizeof(servaddr));

    if (listen(listenfd, 1024) < 0) {
        printf("[ERROR] listen error");
        exit(-1);
    }


    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);
    c->data = (void *)base;

    struct event *listen_event;
    listen_event = event_new(base, listenfd, EV_READ|EV_PERSIST, do_accept, (void *)c);
    event_add(listen_event, NULL);

    event_base_dispatch(base);

    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柳骄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箕般,更是在濱河造成了極大的恐慌耐薯,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丝里,死亡現(xiàn)場離奇詭異曲初,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丙者,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門复斥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人械媒,你說我怎么就攤上這事目锭。” “怎么了纷捞?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵痢虹,是天一觀的道長。 經(jīng)常有香客問我主儡,道長奖唯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任糜值,我火速辦了婚禮丰捷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寂汇。我一直安慰自己病往,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布骄瓣。 她就那樣靜靜地躺著停巷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榕栏。 梳的紋絲不亂的頭發(fā)上畔勤,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音扒磁,去河邊找鬼庆揪。 笑死,一個胖子當(dāng)著我的面吹牛妨托,可吹牛的內(nèi)容都是我干的嚷硫。 我是一名探鬼主播检访,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仔掸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起医清,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤起暮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后会烙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體负懦,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年柏腻,在試婚紗的時候發(fā)現(xiàn)自己被綠了纸厉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡五嫂,死狀恐怖颗品,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沃缘,我是刑警寧澤躯枢,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站槐臀,受9級特大地震影響锄蹂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜水慨,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一得糜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晰洒,春花似錦朝抖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抬驴,卻和暖如春炼七,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背布持。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工豌拙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人题暖。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓按傅,卻偏偏與公主長得像捉超,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子唯绍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理拼岳,服務(wù)發(fā)現(xiàn),斷路器况芒,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 轉(zhuǎn)自: http://www.reibang.com/p/486b0965c296 http://www.jia...
    demop閱讀 3,887評論 1 21
  • 轉(zhuǎn)載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Me...
    Ddaidai閱讀 21,452評論 0 82
  • 一 "我真的已經(jīng)很努力了"小許哭著說绝骚。 我卻不知道用什么樣的語言安慰她耐版。畢竟她所謂的努力,只是每天比別人起得早压汪,睡...
    babysbreathmm閱讀 148評論 4 6
  • 生命的存在和消失止剖,在我看來是一件非常奇妙的事情腺阳。 作為一個正在接受大學(xué)教育的人,理智告訴我滴须,你應(yīng)該是一個無神論者舌狗,...
    我是安迪閱讀 427評論 2 7