谈一谈你对Redis中有序集合ZSet的理解?

1 个回答

  • ketty
    不必太张扬,是花自然香。
    Zset与Set的区别在于每一个元素都有一个Score属性,并且存储时会将元素按照Score从低到高排列。底层是通过跳跃表实现的。跳跃表参考:[ 谈一谈你对跳跃表的理解? ](https://codewd.com/question/1bspad7q) ziplist 当元素较少时(元素个数<128个,且每个元素的长度小于64字节),ZSet的底层编码使用ziplist实现,所有元素按照Score从低到高排序。 skiplist+dict 当元素较多时,使用skiplist+dict来实现。 skiplist存储元素的值和Score,并且将所有元素按照分值有序排列。便于以O(logN)的时间复杂度插入,删除,更新,及根据Score进行范围性查找。 dict存储元素的值和Score的映射关系,便于以O(1)的时间复杂度查找元素对应的分值。
    编辑于 2023-02-22 22:52 •IP属地 美国
    举报
    评论
    收藏