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

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。

你可能感兴趣的:(面试题:Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?)