IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis实现微博热度前100 -> 正文阅读

[大数据]Redis实现微博热度前100

假设微博热度排行榜是根据点赞数量排名

怎么实现?

可以用Redis的有序集合实现,外层key是固定前缀+排行榜名称,内层value是微博ID,对应的score是点赞数量。每次点赞可以用
zincrby key increment score命令给每条微博增加对应的点赞数量。

大key问题

微博数量很多,如果都放在一个key,那就会产生大key问题。可以把一个key拆分成多个key,比如100个key,每个key只存储一部分微博。然后用一个汇总的key保存排名前N的数据
1)这100个key还是保存在一个Redis中。以lua脚本的方式执行下面的命令

// 写操作
zincrby key_{1-100} increment score;
zincrby key_sort_{N} increment score;
// 如果已经包含N个元素,删除最小的一个
if(zcard key_sort_{N}>N){
	zremrangebyrank key_sort_{N} 0 0;
}
// 读操作
zrevrange key_sort_{N} 0 -1 WITHSCORES

2)假设这100个key是分布在不同的redis上面。那么就不能使用lua脚本了
同样的思想,拿出一个汇总的key来保存排行前N的数据。
每次写操作后,异步地将这条微博的点赞数量增加到这个汇总的key上面,命令如下:

// lua脚本执行下面2条命令
zincrby key_sort_{N} increment score;
// 如果已经包含N个元素,删除最小的一个
if(zcard key_sort_{N}>N){
	zremrangebyrank key_sort_{N} 0 0;
}

允许有时候异步线程更新汇总key失败,总不会每次都失败。查询排行前N同上。

拓展

1)不单根据点赞数量排名,还有浏览数量,怎么设计?
2)redis的数据是保存在内存的,如果还没持久化或者说某一段时间里key的排名发生了变化,但还没持久化,redis重启后,会造成用户在前面看到的排行榜和后面看到的排行榜发生了变化,怎么解决?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:47:11  更:2022-04-26 11:50:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:52:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码