数据库
首页 > 数据库> > Redis数据结构(二):简单动态字符串

Redis数据结构(二):简单动态字符串

作者:互联网

  Redis数据结构系列:

  Redis数据结构(一):对外数据类型和底层数据结构

  Redis数据结构(二):简单动态字符串

 

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

  在 Redis 里面, C 字符串只会作为字符串字面量(string literal), 用在一些无须对字符串值进行修改的地方, 比如打印日志;

  当 Redis 需要的不仅仅是一个字符串字面量, 而是一个可以被修改的字符串值时, Redis 就会使用 SDS 来表示字符串值: 比如在 Redis 的数据库里面, 包含字符串值的键值对在底层都是由 SDS 实现的。

 在sds.h/sdshdr下定义了SDS的结构  

struct sdshdr {

    // 记录 buf 数组中已使用字节的数量
    // 等于 SDS 所保存字符串的长度
    int len;

    // 记录 buf 数组中未使用字节的数量
    int free;

    // 字节数组,用于保存字符串
    char buf[];

};

属性说明

  

C语言字符串有以下几个问题:

redids改进:

  

 

标签:字节,SDS,Redis,字符串,长度,数据结构
来源: https://www.cnblogs.com/lsgspace/p/16242841.html