REDIS 五月 10, 2019

Redis底层数据结构

文章字数 18k 阅读约需 16 mins.

简单动态字符串(SDS)

相较于C字符串的优点:

  • 常数复杂度获取字符串长度。
  • 杜绝缓冲区溢出。C字符串不记录自身长度容易造成缓冲区溢出,SDS修改时,API会自动将SDS的空间扩展至执行修改所需的大小,然后才执行实际的修改操作。
  • 减少修改字符串时带来的内存重分配次数。SDS采用空间预分配(增长操作)和惰性释放(缩短操作
  • 二进制安全。C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。SDS可以保存任意格式的二进制数据。
  • 兼容部分C字符串函数,避免了不必要的代码重复。

链表

链表被广泛用于实现Redis的各种功能,比如列表、发布与订阅、慢查询、监视器等。

listNode...

查看全文
0%