扫码一下
查看教程更方便
解析:
Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能。
Redis构建了一个叫做简单动态字符串(Simple Dynamic String),简称SDS
struct sdshdr{
// 记录已使用长度
int len;
// 记录空闲未使用的长度
int free;
// 字符数组
char[] buf;
};
在SDS结构中,字段len存储了当前字符串的长度。所以在获取Redis字符串的长度的时候,直接获取len的值。因此获取Redis字符串的长度的时间复杂度为O(1)。
SDS的最厉害最奇妙之处在于它的Dynamic。动态变化长度。