redis原始碼筆記 ae epoll c

2021-09-08 03:31:05 字數 795 閱讀 6764

這部分**是具體事件觸發網路庫的底層實現。linux下有epoll設施,而且其效率是現在最高的。注意即使高效如redis,其也只是選擇了自動檔-水平觸發(自動檔和手動檔的典故請自行google)。據說libevent也是使用的水平觸發。廢話不多說,看**吧。

1 #include 2

3 typedef struct

aeapistate aeapistate; //作為eventloop結構的apidata儲存78

static

int aeapicreate(aeeventloop *eventloop)

1718

static

void aeapifree(aeeventloop *eventloop)

2425

static

int aeapiaddevent(aeeventloop *eventloop, int fd, int

mask)

4243

static

void aeapidelevent(aeeventloop *eventloop, int fd, int

delmask) else60}

6162

static

int aeapipoll(aeeventloop *eventloop, struct timeval *tvp) 81}

82return

numevents;83}

8485

static

char *aeapiname(void

)

redis原始碼閱讀筆記

在redis中乙個資料庫結構體是這樣的 每個dict是乙個hash表 typedef struct redisdb redisdb dict欄位中存放以key值為鍵,以value指標為值的hash表項dict根據型別的不同分為如下幾種 1 字串 string 操作 set key value get...

redis原始碼學習筆記

目錄 1 從資料結構開始 圖為原始碼,附帶個人簡單分析 a 動態字串 檔案 sds.h sds.c 前言 s sizeof struct sdshdr 的解釋為buf為柔性陣列,不占用空間,僅僅為偏移量,所以s指標向後退乙個結構體大小為結構體位址所在。分析 這個結構是整個動態字串的基礎,sds為 s...

Redis原始碼筆記 跳表

redis 只有在 zset 物件的底層實現用到了跳表,跳表的優勢是能支援平均 o logn 複雜度的節點查詢。zset 物件是唯一乙個同時使用了兩個資料結構來實現的 redis 物件,這兩個資料結構乙個是跳表,乙個是雜湊表。這樣的好處是既能進行高效的範圍查詢,也能進行高效單點查詢。zset 物件能...