美文网首页
《Redis设计与实现》读书笔记 第二章 简单动态字符串SDS

《Redis设计与实现》读书笔记 第二章 简单动态字符串SDS

作者: Janiery | 来源:发表于2020-06-08 01:18 被阅读0次

    SDS的定义

    源码位置

    sds.h/sdshdr

    主要成员

    1.字节数组:char buf[]
    2.sds保存的字符串的长度:int len
    3.buf数组未使用的字节的数量:int free

    SDS相比C字符串的优势

    1.常数复杂度获取字符串长度
    直接使用len属性获取长度,为常数复杂度。
    2.可以杜绝缓冲区溢出
    SDS自动做空间扩展:sds的api要修改sds时,会检查其空间是否满足要求,如果不满足会进行空间扩展,扩展之后再进行操作。
    3.可以减少内存重分配次数
    空间预分配:修改(扩展)后len=free或者free=1M
    惰性空间释放:缩短操作,不会立即释放缩短后多出来的空间
    4.二进制安全
    可以保存图片、音频、视频、压缩文件等等的二进制文件
    5.兼容C字符串
    C字符串的诸多函数SDS依然可以使用

    SDS的使用

    相关文章

      网友评论

          本文标题:《Redis设计与实现》读书笔记 第二章 简单动态字符串SDS

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