关注
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共同实现。
查看原帖
点赞 评论
相关推荐
查看17道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届春招投递记录 #
28831次浏览 206人参与
# 我与AI的日常 #
9525次浏览 130人参与
# 27届实习投递记录 #
107287次浏览 1056人参与
# 你是怎么和mt相处的? #
109118次浏览 566人参与
# 我的求职总结 #
507718次浏览 7045人参与
# 数字马力求职进展汇总 #
356775次浏览 2405人参与
# 工作压力大怎么缓解 #
169435次浏览 1381人参与
# 腾讯工作体验 #
644887次浏览 3905人参与
# 材料专业就业可以去哪些企业岗位 #
68864次浏览 396人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
168327次浏览 913人参与
# 我的租房踩坑经历 #
222882次浏览 1156人参与
# 同花顺工作体验 #
17102次浏览 27人参与
# 牛客租房专区 #
206806次浏览 2582人参与
# 你的房租占工资的比例是多少? #
101548次浏览 906人参与
# 滴!实习打卡 #
860119次浏览 6897人参与
# 嵌入式转岗的难度怎么样 #
141425次浏览 2842人参与
# 如果公司降薪,你会跳槽吗? #
168209次浏览 965人参与
# 产运销实习日记 #
107329次浏览 740人参与
# 摸鱼被leader发现了怎么办 #
206825次浏览 937人参与
# 你在职场上见过哪些“水货”同事 #
41428次浏览 175人参与
