Redis第一讲 Redis数据结构之简单动态字符串(SDS)

Redis底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。它们和数据类型的对应关系如下图所示:

OBJECT ENCODING    key 该命令是用来显示那五大数据类型的底层数据结构。

String数据结构类型

Redis使用了SDS作为默认的字符串表示,SDS是简单动态字符串(Simple Dynamic String)的缩写。SDS结构如下所示:

struct sdshdr {
	    int len;   //buf已使用的长度
	    int free;   //buf未使用的长度
	    char buf[];   //buf表示字节数组,用来存储字符串
	};
  •  Redis 为什么要重新定义SDS 去存储string呢?

1、c语言没有string类型, 只有char[],且char[]必须先分配空间长度;
2、获取char[]的长度,需要遍历数组,len(char[])时间复杂度O(n);
3、char[]预先分配了长度,数据增长后需要扩容;
4、c语言的char数组,用'\0'代表

你可能感兴趣的:(Redis,数据结构,redis)