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

2020-06-08  本文已影响0人  Janiery

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的使用

上一篇 下一篇

猜你喜欢

热点阅读