关注
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共同实现。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
23526次浏览 192人参与
# 机械人春招想让哪家公司来捞你? #
357840次浏览 3109人参与
# 为了求职,我做过的疯狂伪装 #
13796次浏览 277人参与
# 校招笔试 #
1406次浏览 34人参与
# 职场破冰,你们都聊什么? #
8077次浏览 79人参与
# 晒晒你的中秋福利 #
15831次浏览 120人参与
# 大家实习每天都在干啥 #
89496次浏览 518人参与
# 你的公司给实习生发中秋礼物吗 #
2504次浏览 31人参与
# 机械笔面试考察这些知识点 #
10903次浏览 96人参与
# bilibili求职进展汇总 #
91549次浏览 820人参与
# 工作压力大怎么缓解 #
105664次浏览 1053人参与
# 秋招OC许愿 #
347642次浏览 2531人参与
# 广联达求职进展汇总 #
11466次浏览 50人参与
# 机械人怎么评价今年的华为 #
209427次浏览 1525人参与
# 宣讲会你有哪些意向不到的收获 #
1950次浏览 23人参与
# 聊聊这家公司值得去吗 #
561252次浏览 3717人参与
# 你面试被问到过哪些不会的问题? #
23640次浏览 848人参与
# 百度秋招提前批进度 #
151249次浏览 1772人参与
# 电网笔面经互助 #
47188次浏览 431人参与
# 秋招的嫡长offer #
33213次浏览 299人参与