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。
网友评论