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当中发布订阅的使用 -> 正文阅读

[大数据]【闲聊杂谈】Redis当中发布订阅的使用

在Redis @list组中有几个b开头的命令,利用这些命令可以用来实现阻塞式单播队列:一个list可以由10个客户端去阻塞着,此时当这个list中出现了元素之后,第1个阻塞的客户端拿到元素之后,剩余的客户端还在阻塞着,这叫阻塞式单播队列。

?但是很多时候,我们要保证客户端所接收到的消息是一样,比如当你在看小姐姐直播的时候,别的用户不可能一直阻塞着等你看完了再看,你在看小姐姐,别人也想看小姐姐,这时候就该Redis中的pubsub(消息订阅)大显身手的时候了。

老规矩,先用help @pubsub查看消息订阅组相关命令介绍。

?具体来看例子,我先往live1这个频道中发布一则消息hello

再用另一个客户端连上这个Redis,去订阅刚刚发布的这则消息

结果压根就没订阅到刚刚发布的hello,因为hello先发布,后订阅,那么订阅之前发布的消息就不会看到。

那么当我订阅以后,此时再发布消息

订阅者就可以看到发布的消息了

?那么,当我们使用QQ的时候,当进入一个聊天室之后,不仅能看到当前的消息,网上滑动的时候还可以看到历史消息记录,作为一个系统架构在驾驭整个项目的时候,一个聊天室中的所有消息,是存放在关系型数据库还是Redis中呢?如果全放在数据库,数据库全量可以保证,但是查询的时候成本就很高。

其实作为客户端来讲,数据的读取大致分为3类:

①需要实时地接受数据;

②查询近期的历史数据;

③查询更老的历史数据。

全量的数据肯定在数据库中,但直接查数据库中的数据,效率是个问题,所以我们可以使用Redis作为缓存来解决数据的读请求。那Redis要怎么来设计?

①需要实时地接受数据 -> 发布订阅解决

②查询近期的历史数据 -> 考虑到历史数据必须要按照时间顺序排序,Sorted Set解决

③直接查数据库,毕竟对于更老的历史数据查询不太会存在高并发的情况。

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:20:26  更:2021-09-13 09:21:47 
 
开发: 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/23 20:31:16-

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