实现字符串对象
Redis 是一个键值对数据库(key-value DB),数据库的值可以是字符串、集合、列表等多种类<br>型的对象,而数据库的键则总是字符串对象。<br>对于那些包含字符串值的字符串对象来说,每个字符串对象都包含一个 sds 值。
char*类型的替代品
因为 char* 类型的功能单一,抽象层次低,并且不能高效地支持一些 Redis 常用的操作(比<br>如追加操作和长度计算操作),所以在 Redis 程序内部,绝大部分情况下都会使用 sds 而不是<br>char* 来表示字符串
目前来说,只要记住这样一个事实即可:在 Redis 中,客户端传入服务器的协议内容、aof 缓<br>存、返回给客户端的回复,等等,这些重要的内容都是由都是由 sds 类型来保存的。
这种简单的字符串表示在大多数情况下都能满足要求,但是,它并不能高效地支持长度计算和<br>追加(append)这两种操作:<br>• 每次计算字符串长度(strlen(s))的复杂度为 θ(N) 。<br>4 Chapter 1. 内部数据结构<br>Redis 设计与实现, 第一版<br>• 对字符串进行 N 次追加,必定需要对字符串进行 N 次内存重分配(realloc)。