美文网首页
sds的优秀

sds的优秀

作者: 耗子_aca3 | 来源:发表于2020-07-28 21:37 被阅读0次
    • sds概念:redis没有直接使用C语言传统的字符串表示(以字符串结尾的字符数组),而是自己构建的简单动态字符串(simple dynamic string)的抽象类型。(逼逼两句:譬如字符串类型的键是一个字符串对象,对象的底层是一个保存了字符串的sds)
    • sds 结构体
    struct sdshdr {
    // 记录buf数组中已使用字节的数量,等于sds所保存字符串的长度
    int len; 
    // 记录buf数组中未使用字节的数量
    int free;
    // 字节数组,用于保存字符串
    char buf[];
    }
    
    • 常数复杂度获取字符串长度(sds在len属性中记录了sds本身的长度,所以获取一个sds长度的复杂度仅为O(1))
    • 杜绝缓冲区溢出
    • 空间预分配(如果对sds进行修改后,sds的长度(也即是len属性的值)将小于1MB,那么程序分配和len属性同样大小的未使用空间,这时sds len属性的值将和free属性值相同。如果修改后,sds len将变成30MB,那么程序会分配1MB的未使用空间。)
    • 惰性空间释放
    • 二进制安全
    • 兼容部分C字符串函数

    相关文章

      网友评论

          本文标题:sds的优秀

          本文链接:https://www.haomeiwen.com/subject/fpazlktx.html