基于Redis 千万级用户排行榜最佳实践

来源:互联网 发布:linux下挂载磁盘阵列 编辑:程序博客网 时间:2024/05/29 14:56

基于Redis 千万级用户排行榜最佳实践

前言

Redis 是一个开源的,内存中的数据结构存储系统,可以用作数据库、缓存和消息队列中间件。它支持多种类型的数据结构,如 字符串(string), Hash, 列表(List), 集合(Set), 有序集合(Sorted Set) 。 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的 磁盘持久化(Persistence), 并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性

根据Redis支持的几大数据结构, 我们可以在多个场景加以应用, 目前应用最广泛的场景主要用于以下几大类:

基于Web服务的分布式会话Session存储

消息队列

排行榜

计数器

发布/订阅

此文主要讲解个人是如何处理千万级别用户排行榜并持久化用户排行榜用户数据

排行榜种类

由于排行榜的不同业务需求, 需要从不同角度去考虑排行榜的榜单生成规则. 目前我们主要研究实时榜和历史榜单

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

排行榜Redis数据结构选择

在这里, 我们采用Redis Sorted Set数据结构来处理排行榜数据, 根据官方文档定义:

Redis Sorted sets —
Sorted sets are a data type which is similar to a mix between a Set and a Hash. Like sets, sorted sets are composed of unique, non-repeating string elements, so in some sense a sorted set is a set as well.

​ However while elements inside sets are not ordered, every element in a sorted set is associated with a floating point value, called the score (this is why the type is also similar to a hash, since every element is mapped to a value).

​ 然而,虽然Set中的元素没有被排序,但排序集中的每个元素都与一个浮点值相关联,这个值称为得分(这也是为什么该类型与哈希类似,因为每个元素都映射到一个值)。

​ Moreover, elements in a sorted sets are taken in order (so they are not ordered on request, order is a peculiarity of the data structure used to represent sorted sets). They are ordered according to the following rule:

​ 此外,Sorted Set中的元素是按顺序排列的(而不是按加入的先后顺序排序的,并且这个顺序是用于表示排序集的数据结构的一个特性)。

​ 在Sorted Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted Set中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。

Sorted Set底层的实现是跳跃表(Skip List),插入和删除的效率都很高.

原文链接

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 装修布局 四合院布局 户型布局 相片墙布局 衣柜布局 专利布局 餐厅布局 宴会厅布局 飞翼布局 房子布局 html5布局 布局设计 弹性布局 小超市布局 相对布局 橱柜布局 布局谋篇 厕所布局 流式布局 桌面布局 栅格布局 围棋 布局 咖啡馆布局 摄影展布局 便利店布局 鸭翼布局 表格布局 院子布局 qt布局 照片墙布局 工厂布局图 网点布局 钢铁厂布局 桌面布局已锁定怎么解除 正规水电布局图 布局统一的意思 天安门广场布局 卫生间布局图 人体内脏布局图高清 键盘布局108键键位 圆明园的布局