关注
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共同实现。
查看原帖
点赞 评论
相关推荐
新晋切图仔:44kg那么轻,要多吃点啊
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
32626次浏览 661人参与
# 发工资后,你做的第一件事是什么 #
67789次浏览 229人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
26692次浏览 213人参与
# 秋招什么时候开投比较合适? #
20511次浏览 285人参与
# 百度工作体验 #
220797次浏览 1964人参与
# 实习,不懂就问 #
43528次浏览 655人参与
# 如何准备秋招 #
18968次浏览 360人参与
# 机械人集合!你是什么工程师? #
15536次浏览 89人参与
# 工作中哪个瞬间让你想离职 #
25627次浏览 177人参与
# 快手求职进展汇总 #
546691次浏览 6001人参与
# 硬件应届生薪资是否普遍偏低? #
73787次浏览 514人参与
# 不考虑转正,实习多久合适 #
31831次浏览 145人参与
# 你们公司几号发工资 #
20737次浏览 139人参与
# 机械人与华为的爱恨情仇 #
116480次浏览 943人参与
# 软开人,秋招你打算投哪些公司呢 #
102659次浏览 958人参与
# 每个月的工资都是怎么分配的? #
26484次浏览 420人参与
# 多益网络求职进展汇总 #
28972次浏览 134人参与
# 你觉得现在还能进互联网吗? #
7914次浏览 132人参与
# 元戎启行求职进展汇总 #
32477次浏览 240人参与
# 面试中,你被问过哪些奇葩问题? #
68284次浏览 796人参与
# 预测一下26届秋招形势 #
39591次浏览 303人参与