《Redis 设计与实现》第二版读书笔记之字符串

本文介绍了Redis中使用的简单动态字符串(SDS)结构,包括其特点如O(1)复杂度获取长度、防止缓冲区溢出、自动扩展等,并讨论了SDS与C字符串的区别。

简单动态字符串(SDS)

在Redis里面,C字符串只会作字符串字面量用在一些无须对字符串值进行修改的地方,比如打印日志
每个sds.h/sdshdr结构表示一个SDS值:

struct sdshdr {
    int len;
    int free;
    char buf[];
};
  • SDS遵循C字符串结尾的惯例,保存空字符的1字节空间不计算在len里面

SDS与C字符串的区别

  1. O(1)复杂度获取字符串长度
  2. 杜绝缓冲区溢出
    当空间不够时会自动扩展
    3.减少修改字符串时带来的内存重分配次数
    空间预分配
    惰性空间释放
  3. 二进制安全:可以保存文本和二进制数据
  4. 兼容部分C字符串函数:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值