zset 的底层选用什么数据结构取决于存入的数据量大小,当保存的元素个数小于 128 并且保存的所有元素占用内存小于 64 时是 ziplist 压缩表,压缩表底层是一个数组,逻辑上维护多个数组元素为一个部分,其中包括 头部源数据,redis 元素,redis 算分,头部源数据内部包括元素占用字节,最后一个元素的偏移位置,总元素个数,这样通过头部信息就可以顺序计算出元素所在位置,压缩表查询时顺序的计算地址复杂度是 O(n) 当所以当数据量变大时 redis 就选用 skiplist skiplist 时间复杂度是 O(log) 其底层是使用链表 + 随机化 维护的一个伪平衡树,比起平衡树使用随机 hash 值代替严格子父标准,比起平衡树节约了内存同时继承了其搜索效率
点赞

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务