Redis自定义动态字符串(sds)模块
Posted 扫地猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis自定义动态字符串(sds)模块相关的知识,希望对你有一定的参考价值。
sds模块的具体实现:
1、sdsnewlen 根据参数生成一个sds字符串
1 sds sdsnewlen(const void *init, size_t initlen) 2 { 3 struct sdshdr *sh; 4 //如果初始化的内容为NULL,则生成一个内容只有一个\0的串,但是长度不会变,还是传入的长度。zmalloc和zcalloc的功能一样,这个地方为啥还要调用不同的呢。 5 if (init) { 6 sh = zmalloc(sizeof(struct sdshdr)+initlen+1); 7 } else { 8 sh = zcalloc(sizeof(struct sdshdr)+initlen+1); 9 } 10 if (sh == NULL) return NULL;//申请失败返回NULL 11 sh->len = initlen;//初始化长度为传入值。 12 sh->free = 0;//设定剩余长度为0 13 if (initlen && init) 14 memcpy(sh->buf, init, initlen);//初始化值 15 sh->buf[initlen] = ‘\0‘;填写最后的结尾符 16 return (char*)sh->buf; 17 }
未完待续。。。
以上是关于Redis自定义动态字符串(sds)模块的主要内容,如果未能解决你的问题,请参考以下文章