Redis 源碼中的sds,是一個(gè)動(dòng)態(tài)字符串庫(A dynamic string library).
結(jié)構(gòu)如下:
struct sdshdr {
? int len;
? int free;
? char buf[];
};
len是字符串長度,free是緩存區(qū)中的剩余大小,其中的內(nèi)存分配當(dāng)然用zmalloc。
typedef char* sds; ?sds類型的指針退sizeof(sdshdr)個(gè)字節(jié)就是sdshdr。
這個(gè)庫接口比較豐富,包括增長(sdsMakeRoom, sdsgrowzero,sdscat,sdslen,緩存區(qū)每次增長到需要的2倍,如果超過1M,則每次增長1M),切分(sdssplit,sdssplitlen),sprintf接口,大小寫轉(zhuǎn)換,字符替換。
比較特別的是其中可以添加引用字符串(quoted string),接口為sdscatrepr,還有反向操作sdssplitargs,可以做命令行解析。
感覺里面少一個(gè)字符串替換的接口。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
