面试题:Redis有哪些数据结构?底层的编码有哪些?有序链表采用

2019-07-17  本文已影响0人  鸿雁长飞鱼龙潜跃

Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?

一,Redis有哪些数据结构?

答:redis有5种数据结构。

字符串(string)

列表(list)

字典(hash)

集合(set)

有序集合(zset)

二,redis底层的编码有哪些?

答:redis底层的编码,指的就是5种数据结构各自对应的编码。

字符串(string):int、embstr、raw

列表(list):linkedlist、ziplist

字典(hash):hashtable、ziplist

集合(set):hashtable、inset

有序集合(zset):skiplist、ziplist

每种内部编码的细节,这里限于篇幅,不再赘述。

我们来看一下这样设计的好处:针对不同的场景,使用不同的内部编码,提高整体性能。

redis的实现中,很多地方都贯穿着这种思想,根据使用场景和数据量,采用不同的实现方案。有些人说redis过度设计,其实就是这个原因。因为redis是单线程,并且内存是有限的,为了最大限度的提高性能,redis不得不做这些设计。

三,有序链表采用了哪些不同的编码?

首先,这里的有序链表应该指的是list(列表),因为只有list的底层内部编码有可能是linkedlist。

OK,搞清楚了这个问题,答案其实也很简单了。

答:有序链表有2种内部编码:linkedlist、ziplist。

上一篇 下一篇

猜你喜欢

热点阅读