关注
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-10 00:18
郑州大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我是面试官,请用一句话让我破防 #
16016次浏览 100人参与
# 美团开奖 #
183302次浏览 969人参与
# 快手技术岗信息交流阵地 #
15719次浏览 82人参与
# 校招生月薪1W算什么水平 #
15276次浏览 112人参与
# 中美关税战对我们有哪些影响 #
37747次浏览 306人参与
# i人适合做什么工作 #
7868次浏览 81人参与
# “vivo”个offer #
32970次浏览 247人参与
# 读研or工作,哪个性价比更高? #
75202次浏览 762人参与
# 华为保温 #
102384次浏览 383人参与
# 哪些瞬间让你真切感受到了工作的乐趣 #
17180次浏览 79人参与
# 小厂实习有必要去吗 #
69883次浏览 344人参与
# 哪些行业值得去? #
2871次浏览 40人参与
# 秋招什么时候开投比较合适? #
109803次浏览 807人参与
# 如果秋招能重来,我会____ #
29606次浏览 255人参与
# 华为池子有多大 #
107443次浏览 748人参与
# 美团求职进展汇总 #
2805968次浏览 23836人参与
# 上班后和你想的一样吗? #
87441次浏览 666人参与
# 苦尽甘来时,再讲来时路 #
26266次浏览 359人参与
# 为了实习逃课值吗? #
23146次浏览 214人参与
# 大家实习每天都在干啥 #
97101次浏览 536人参与
# 工作压力大怎么缓解 #
119657次浏览 1112人参与
# 如果上班像打游戏,你最想解锁什么技能 #
5590次浏览 55人参与
查看7道真题和解析