整体思路: 1 惰性缩容.不释放空间,留给到期释放等机制释放. 2 加倍扩容.在需要空间达1M之前按新空间两倍分配空间,否则按新空间大小+1M分配.注意,1M=1024*1024*Char.Char可以是5bits/8bits/16bits/32bits/64bits 具体代码块: 惰性缩容:https://github.com/antirez/sds/blob/master/sds.c line374-390 /* Grow the sds to have the specified leng…
跳跃表是一种随机化的数据结构,在查找.插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(log n)平均时间,但它的代码以及原理更简单. 和链表.字典等数据结构被广泛地应用在Redis内部不同,Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群结点中用作内部数据结构.除此之外,跳跃表在Redis里面没有其他用途. /* ZSETs use a specialized version of Skiplists */ typedef struc…