Redis设计【数据结构】

Redis键值对是由对象组成的。本文介绍Redis底层实现这些对象的数据结构。包括简单动态字符串,链表,字典,跳跃表,整数集合和压缩列表。

简单动态字符串(SDS)

数据结构如下:

与C字符串有几个区别:

  1. 常数复杂度时间内获得字符串长度。
  2. 能够杜绝缓冲区溢出:SDS会先检查是否满足大小,若不满足,会先进行扩展。
  3. 减少修改字符串时带来的内存重新分配的次数:空间预分配和惰性空间释放。
  4. 二进制安全:数据库中有时也会存储二进制的数据。SDS用二进制的方式处理。
  5. 兼容部分C字符串函数。

链表:

数据结构如下:

双端,无环,带表头指针和表尾指针,带链表长度计数器,多态(可以保存各种不同结构的值)。

未完待续。。。

发布了73 篇原创文章 · 获赞 11 · 访问量 9478

猜你喜欢

转载自blog.csdn.net/fanyuwgy/article/details/103838221