得物高工技术终面: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数据结构底层实现的主要内容,如果未能解决你的问题,请参考以下文章