得物高工技术终面:redis数据结构底层实现

Posted go大鸡腿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了得物高工技术终面:redis数据结构底层实现相关的知识,希望对你有一定的参考价值。

前言

博主硬钢到技术终面,算是尽力了,面试官也觉得我年轻了些,之前蚂蚁金服的面试官也这么说。害,只能一点点打好基础,加油。
被pass的是因为redis数据结构底层实现知识不扎实,今天恶补一下!

redis 数据结构

  • string
  • list
  • hash
  • set
  • zset
  • geo
  • bitmap
  • hypeloglog

底层实现

sds

sds(Simple dynamic string)
数据结构

有什么特点呢?就是会保存字符串的长度,以及未使用的长度,这样的话可以避免内存溢出以及方便对应的扩容,不需要去遍历
resize过程
扩展过程,在小于1M的时候会翻倍扩展,大于1M的时候最多扩展1M,减少资源浪费

dic字典

dic
是hash的数据结构实现
rehash要点

好处:就是在扩容的时候,不会说不能提供服务,会存在两张hash表,然后进行相应的同步,新增的时候只在新hash表,删除两边都删除,查询会先查旧的,没有再查新的。

skiplist

这个是zset的底层实现

会有多层的索引,这样的话可以更加快捷的查询的数据,对比红黑树会更简单实现,新增或者删除不会有树的调整。

ziplist 压缩列表

是list数据结构的实现

说实话这个看不太懂,会保存到队尾的距离,这样的话不用去一直遍历,然后还有不同的储存类型,根据字节的数量

快速列表(quicklist)

这个跳过,卷不动了,大家自行学习

参考blog

以上是关于得物高工技术终面:redis数据结构底层实现的主要内容,如果未能解决你的问题,请参考以下文章

redis模型:redis对象

Redis底层数据结构

Redis底层的I/O模型

Redis的五种数据结构及其底层实现原理

Redis中hash、set、zset的底层数据结构原理

Redis - zset底层数据结构实现