面试官:你看过Redis数据结构底层实现吗?
发布时间:2019-06-23 00:42:56 所属栏目:MySql教程 来源:奔头哥
导读:面试中,redis也是很受面试官亲睐的一部分。我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构。你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap、List、等使用的数据结构有什么区别呢。 1. 字符串处理(string) 我们
Hash表节点:
字典:
可以看出:
下面我们讲一下它的rehash优化。 3.2 rehash 当哈希表的键对泰国或者太少,就需要对哈希表的大小进行调整,redis是如何调整的呢?
3.3 渐进式rehash 我们在3.2中看到,redis处理rehash的流程,但是更细一点的讲,它如何进行数据迁的呢? 这就涉及到了渐进式rehash,redis考虑到大量数据迁移带来的cpu繁忙(可能导致一段时间内停止服务),所以采用了渐进式rehash的方案。步骤如下:
它的好处:采用分而治之的思想,将庞大的迁移工作量划分到每一次CURD中,避免了服务繁忙。 4. 跳跃表 这个数据结构是我面试中见过最多的,它其实特别简单。学过的人可能都知道,它和平衡树性能很相似,但为什么不用平衡树而用skipList呢? 4.1 skipList & AVL 之间的选择
可以看到,skipList中的元素是有序的,所以跳跃表在redis中用在有序集合键、集群节点内部数据结构 4.2 源码 跳跃表节点:
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |