关注
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共同实现。
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
09-19 15:55
西北农林科技大学 Web前端 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 🎉创作红榜第2期丨7篇内容解决你的“求职/职场/成长困惑”!4370
- 2... 这,就是你想看的爽文嘛?2921
- 3... 携程 后端 线下面2691
- 4... 【26秋招】我是如何从男模上岸大厂程序员----上岸前的苦苦挣扎(2)2274
- 5... 招银网络科技一面1950
- 6... 字节坠机复活,公式化面试遇上公式化八股小子1632
- 7... 妈妈我不是没offer的野人了1592
- 8... TP-Link 芯片事业部全员解散?1556
- 9... 还得是追觅啊,号称要招1000名清华毕业生 1463
- 10... 招银云创一面 9.181411
正在热议
更多
# 宣讲会你有哪些意向不到的收获 #
8330次浏览 45人参与
# 水滴求职进展汇总 #
7420次浏览 39人参与
# 你面试被问到过哪些不会的问题? #
46749次浏览 1169人参与
# 从顶到拉给所有面过的公司评分 #
52064次浏览 313人参与
# 你的公司给实习生发中秋礼物吗 #
6086次浏览 38人参与
# 度小满求职进展汇总 #
2221次浏览 21人参与
# 晒晒你的中秋福利 #
20504次浏览 141人参与
# 为了求职,我做过的疯狂伪装 #
23542次浏览 483人参与
# 你的国庆怎么过 #
28757次浏览 256人参与
# 工作压力大怎么缓解 #
109028次浏览 1072人参与
# 机械制造岗投递时间线 #
29203次浏览 372人参与
# 十一假期一定要干的事 #
19443次浏览 146人参与
# bilibili求职进展汇总 #
104790次浏览 878人参与
# 秋招的嫡长offer #
63907次浏览 519人参与
# 聊聊这家公司值得去吗 #
587648次浏览 3838人参与
# 职场破冰,你们都聊什么? #
13293次浏览 99人参与
# 小厂实习有必要去吗 #
58079次浏览 292人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
104525次浏览 721人参与
# 当你面对裁员会如何? #
306973次浏览 2616人参与
# 你的工资什么时候发? #
42717次浏览 303人参与