1 | Redis 基础数据结构 SDS

在 redis 中,保存基础的字符串的数据结构为 Simple Dynamic String(SDS),它是一个对 C 语言中字符串的包装结构。在 C 语言中,用 char[] str 来声明一个字符串,且每个字符串都以 \0 结尾,一些字符串操作函数,都以 \0 作为字符串的结束标识符。而 SDS 则作为一个结构体,包含了长度(len)、空闲(free)以及字符串(char[])。

SDS概览

定义

比 C 字符串多含有 len、free 字段的结构体。

1
2
3
4
5
6
7
8
struct sdshdr {
// buf 中已占用空间的长度
int len;
// buf 中剩余可用空间的长度
int free;
// 数据空间
char buf[];
};

实际长度:len + free + 1

可用长度:free

字符串长度:len,不包括空字符 \0

SDS结构示意图

与C字符串的区别

主要操作API

1 | Redis 基础数据结构 SDS

https://eucham.me/2020/11/08/5adefc0a1796.html

作者

遇寻

发布于

2020-11-08

更新于

2021-04-07

许可协议

评论