关注
Q7:
如果我现在想用Redis实现一个TOP排行榜,我该怎样实现这个操作呢?然后可以为我详细介绍一下这个数据结构(它的底层是怎样实现的)
A:
排行榜可以通过Redis中的zset来实现,可以根据实时的Score来进行排序得到TOP排行榜。而Redis中的zset具有两种不同的实现方案,首先便是ziplist,采用的是类似于哈希对象的存取方式,一个entry项中,前一个是key,然后跟着的是score;但是类似于其他对象的ziplist实现方案,这种实现会受到大小的限制,即单个元素的长度小于64,元素数量小于128;另外一种是采取skiplist(可以根据Score由小到大进行排序,另外还可以存储对象,即分值对应的对象)编码实现,这种实现方案不仅采用了skiplist,而且使用了hash来进行优化。
而关于Redis为什么采用了SkipList还要使用Hash来进行优化,我的考虑在于skiplist与hash的优缺点比较,其中skiplist的优点在于:实现简单,数据天然有序 ,但是其查询和插入时间复杂度均为O(logn),而Hash的查询,插入时间复杂度均为O(1),但是其并不适合查询操作,因此,**可以结合两者的特性,让更擅长的人做更擅长的事**。因此采用了hash和skiplist共同实现。
查看原帖
点赞 评论
相关推荐
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 8人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
11-22 14:57
太原理工大学 线下拓展运营 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
318892次浏览 2931人参与
# 上班苦还是上学苦呢? #
67662次浏览 564人参与
# 阿里云管培生offer #
35661次浏览 420人参与
# 地方国企笔面经互助 #
4295次浏览 12人参与
# 如果有时光机,你最想去到哪个年纪? #
19934次浏览 328人参与
# 选完offer后,你后悔学本专业吗 #
21194次浏览 152人参与
# 百度开奖 #
177885次浏览 1114人参与
# 如何一边实习一边秋招 #
995151次浏览 12656人参与
# 招聘要求与实际实习内容不符怎么办 #
10613次浏览 276人参与
# 许愿池 #
214352次浏览 2534人参与
# 学历or实习经历,哪个更重要 #
53101次浏览 415人参与
# 海康威视求职进展汇总 #
400122次浏览 3406人参与
# 正在实习的你,几点下班 #
52860次浏览 394人参与
# 如果再来一次,你还会学硬件吗 #
95018次浏览 1167人参与
# 科大讯飞求职进展汇总 #
237876次浏览 2504人参与
# 国央企薪资爆料 #
10863次浏览 77人参与
# 软开人,秋招你打算投哪些公司呢 #
43922次浏览 544人参与
# 软件开发薪资爆料 #
2187347次浏览 21832人参与
# 租房前辈的忠告 #
109259次浏览 5232人参与
# 得物求职进展汇总 #
67117次浏览 686人参与
# 机械制造秋招总结 #
30515次浏览 354人参与
# 米哈游求职进展汇总 #
176742次浏览 1464人参与