使得Redis可以直接使用C语言的相关字符第一
2020-12-22 21:28
标签:一个 超出 时间 字节 字符串 操作 需要 形式 数据 当前存储字符串长度为5,未使用长度为0,字节数组存储的字符为“Redis\0”。 这里需要注意的是:内部数据数组存储字符串形式符合C语言要求,以‘\0’结尾。且len字符串长度不包含结尾标识符‘\0’。 buf[]的这种遵循C语言形式的存储,使得Redis可以直接使用C语言的相关字符串函数进行SDS对象的操作。 SDS内部维护着一个字符串长度的len变量,可以直接读取,时间复杂度为O(1)。 对于传统的C字符串:字符+“\0”,想要获取字符长度,则需要遍历整个字符串,直到遇到结束字符,时间复杂度为O(n)。 所谓缓冲区溢出即所需要的内存超出了实际的内存。因此对于C字符串来说,要特别注意内存分配,回收使用问题。 比如,向一个现有字符串内添加特定字符时,需要保证当前已经分配了这足够的内存。 使得Redis可以直接使用C语言的相关字符第一 标签:一个 超出 时间 字节 字符串 操作 需要 形式 数据 原文地址:https://www.cnblogs.com/nokusig/p/13215655.html二、SDS的优势
1、O(1)时间复杂度获取字符串长度
2、缓冲区溢出规避
文章标题:使得Redis可以直接使用C语言的相关字符第一
文章链接:http://soscw.com/index.php/essay/37650.html