redis---sds(简单动态字符串)详解

1,sds定义

    sds是simple dynamic string的缩写,意为简单动态字符串。

    定义为:

struct sdshdr {
    long len;         //记录buf数组已使用的字节数量,即sds保存的字符串的长度,不含'\0'
    long free;        //记录buf数组中未使用字节的数量
    char buf[0];      //字节数组,用于保存字符串
};

   如图:

  len:4,表示这个数组保存的字符串的长度是4。

  free:4,表示这个数组的未使用空间是4。

  buf:是一个字符数组,前4个字节保存的是字符'L'、‘u’、‘o’、‘L’,最后一个字节保存的是字符串结束标识‘\0’。

  sds遵循C字符串以空字符结尾的惯例,保存空字符的1字节不计算在sds的len中,并且为空字符分配额外的1字节空间,以及添  加空字符到字符串末尾等操作,是由sds函数自动完成的。这样遵循空字符结尾这一惯例的好处是,sds可以直接重用一部分c字符串函数库里面的函数。

2,sds与c字符串的区别

     既然sds中保存的也是字符串,为什么不直接使用字符串,而还要封装成一个结构体呢?

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值