在Redis的内部,数据结构类型值由高效的数据结构和算法进行支持,并且在Redis自身的构建当中,也大量用到了这些数据结构。 这一部分将对Redis内存所使用的数据结构和算法进行介绍。
在Redis的内部,数据结构类型值由高效的数据结构和算法进行支持,并且在Redis自身的构建当中,也大量用到了这些数据结构。
•sds会为追加操作进行优化:加快追加操作的速度,并降低内存分配的次数,代价是多占用了一些内存,而且这些内存不会被主动释放。
大部分C 程序都会自己实现一种链表类型,redisbookRedis也不例外。双端链表还是Redis列表类型的底层实现之一
因为双端链表占用的内存比压缩列表要多,所以当创建新的列表键时,列表会优先考虑
使用压缩列表作为底层实现,并且在有需要的时候,才从压缩列表实现转换到双端链表实现。
</><> ><> –节点带有前驱和后继指针,访问前驱节点和后继节点的复杂度为><> –链表带有指向表头和表尾的指针,因此对表头和表尾进行处理的复杂度为><> –链表带有记录节点数量的属性,所以可以在><> 字典(><> 因为压缩列表比字典更节省内存,所以程序在创建新><> 每个><>< /></><> •><> 它的效率可以和平衡树媲美——查找、删除、添加等操作都可以在对数期望时间下完成,</><> •层:保存着指向其他元素的指针。高层的指针越过的元素数量大于等于低层的指针,为了提高查找的效率,程序总是从高层先开始访问,然后随着元素值范围的缩小,慢慢降低层次。</><> ><>< /></><> 跳跃表将指向有序集的><> 为了适应自身的需求,><> >