字符串(String):动态字符串 SDS
列表(List):压缩链表 ziplist和 双向链表 linkedlist
哈希(hash):压缩链表 ziplist和哈希表hashtable
集合(Set):哈希表 hashtable
有序集合(zset):压缩链表 ziplist和 跳表skiplist
为什么redis用跳表而不是红黑树(查找单个key,跳表和平衡树时间复杂度都是O(logN))
1、跳表在范围查询的时候的效率是高于红黑树的,因为跳表是从上层往下层查找的,上层的区域范围更广,可以快速定位到查询的范围(重要)
2、跳表的实现更加简单,不用旋转节点,相对效率更高
3、平衡树的插入和删除操作可能引发子树的调整、逻辑复杂,而跳表只需要维护相邻节点即可
https://blog.csdn.net/xpsallwell/article/details/84030285
https://blog.csdn.net/abel_liujinquan/article/details/89339599