List、Set、SortedSet哪种更适合做点赞排行榜呢?那其他两种为什么不适合呢?这篇文章带你详细解析三者的区别
List、Set、SortedSet这三种哪种适合做排行榜,说明原因,以及其他两种为什么不适合
- List
- 排序方式:可以做排序,是一个链表,按照添加顺序排序,有Lpush和Rpush两种,如果所有的元素都按Lpush去插入,那元素先插入的在最后,后插入的在最前,就变成按插入顺序倒序排序。跟点赞排行榜不符,但如果采用Rpush,先点赞的在最前面,后点赞的在后面。这样就符合,所以说List支持点赞排序
- 唯一性:List被排除,List是个链表,无法保证数据唯一性。
- 查找方式:按下标查找元素或者首尾查找,想知道元素到底存不存在,只能遍历表。
- 唯一性:List被排除,List是个链表,无法保证数据唯一性。
- 查找方式:按下标查找元素或者首尾查找,想知道元素到底存不存在,只能遍历表。
- Set
- 排序方式:不支持排序
- 唯一性:满足,底层有一个hash表。可以判断元素是否存在,把重复元素剔除或者覆盖。
- 查找方式:同理SortedSet
- SortedSet
- 排序方式:可以排序,按照score排序,这个socre分数可以是用户自定义的任意的数据,如果我按照时间戳存储,也能按照添加顺序排序。添加越晚时间戳越大,添加越早时间戳越小。天然带有顺序,可以实现时间排序
- 唯一性:与Set同理
- 查找方式:因为底层采用hash表,所以可以根据元素做hash运算快速定位到数组位置,然后去判断是否存在,所以他们的查找更快、更高效
- 上述,分析得出sortedset更符合点赞排行榜需求。
有任何想要讨论和学习的问题可联系我:577371067@qq.com 不足之处请大家指正。