关注
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共同实现。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客31544035...:最近hc 少,基本上不怎么缺人,两段大厂实习试着投了投也没啥面试
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 对2025年忏悔 #
1765次浏览 45人参与
# 腾讯音乐求职进展汇总 #
145306次浏览 1038人参与
# 实习没人带,苟住还是跑路? #
7383次浏览 165人参与
# 我们是不是被“优绩主义”绑架了? #
7009次浏览 247人参与
# 元旦假期你打算怎么过 #
5155次浏览 131人参与
# 大家实习都在做什么? #
6506次浏览 63人参与
# 电网笔面经互助 #
56804次浏览 470人参与
# 春招前还要继续实习吗? #
1779次浏览 27人参与
# 一人说一家双休的公司 #
4093次浏览 67人参与
# 面试官问过你最刁钻的问题是什么? #
4601次浏览 65人参与
# 毕业论文怎么查AI率 #
70133次浏览 1941人参与
# 非技术2024笔面经 #
451355次浏览 4918人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105504次浏览 1649人参与
# 牛客2025仙途报告 #
30788次浏览 394人参与
# 你做过哪些dirty work #
25081次浏览 155人参与
# 联影求职进展汇总 #
165141次浏览 832人参与
# 你们的毕业论文什么进度了 #
1223984次浏览 9903人参与
# 硬件人秋招进展 #
262613次浏览 3963人参与
# 晒一晒你收到的礼盒 #
93234次浏览 446人参与
# 实习心态崩了 #
96851次浏览 495人参与