Redis五大类型及底层实现原理

 

简单动态字符串  导读

Redis 只会使用 C 字符串作为字面量, 在大多数情况下, Redis 使用 SDS (Simple Dynamic String,简单动态字符串)作为字符串表示。

比起 C 字符串, SDS 具有以下优点:

常数复杂度获取字符串长度。

杜绝缓冲区溢出。

减少修改字符串长度时所需的内存重分配次数。

二进制安全。

兼容部分 C 字符串函数。

 

简单动态字符串

Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。

SDS 的定义

每个 sds.h/sdshdr 结构表示一个 SDS 值:

struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于 SDS 所保存字符串的长度 int len; // 记录 buf 数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[]; };

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxyws.html