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

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

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-07-17 15:58 被阅读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。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/klxclctx.html