1.1.1sds作用
- 實(shí)現(xiàn)字符串對(duì)象
- 替代 char*類型
1.1.2 sds結(jié)構(gòu)
typedef char *sds;
struct sdshdr {
// buf 已占用長(zhǎng)度
int len;
// buf 剩余可用長(zhǎng)度
int free;
// 實(shí)際保存字符串?dāng)?shù)據(jù)的地方
char buf[];
};
1.1.3 sds優(yōu)勢(shì)
- Redis 的字符串表示為 sds 废赞,而不是 C 字符串(以 \0 結(jié)尾的 char*) 。
- 對(duì)比 C 字符串叮姑,sds 有以下特性:
1可以高效地執(zhí)行長(zhǎng)度計(jì)算(strlen
2可以高效地執(zhí)行追加操作(append)
3二進(jìn)制安全
- sds 會(huì)為追加操作進(jìn)行優(yōu)化:加快追加操作的速度唉地,并降低內(nèi)存分配的次數(shù),代價(jià)是多占用了一些內(nèi)存传透,而且這些內(nèi)存不會(huì)被主動(dòng)釋放耘沼。