redis--消息队列

分类

生产者消费模式

发布者订阅模式

生产者消费模式

在生产者消费者(Producer/Consumer)模式下,上层应用接收到的外部请求后开始处理其当前步骤的操作,在执行完成后将已经完成的操作发送至指定的频道(channel)当中,并由其下层的应用监听该频道并继续下一步的操作,如果其处理完成后没有下一步的操作就直接返回数据给外部请求,如果还有下一步的操作就再将任务发布到另外一个频道,由另外一个消费者继续监听和处理。

模式介绍

生产者消费者模式下,多个消费者同时监听一个队里,但是一个消息只能被最先抢到消息的消费者消费,即消息任务是一次性读取和处理,此模式在分布式业务架构中非常常用,比较常用的软件还有RabbitMQ、Kafka、RocketMQ、ActiveMQ等

 队列介绍

队列当中的 消息由不同的生产者写入也会有不同的消费者取出进行消费处理,但是一个消息一定是只能被取出一次也就是被消费一次

 生产者发布消息

127.0.0.1:6379> lrange channell 0 -1
1) "x2"
2) "x1"
127.0.0.1:6379> lpush channell x3
(integer) 3
127.0.0.1:6379> lpush channell x4
(integer) 4
127.0.0.1:6379> lpush channell x5
(integer) 5

查看队列所有消息

127.0.0.1:6379> lrange channell 0 -1
1) "x5"
2) "x4"
3) "x3"
4) "x2"
5) "x1"

消费者消费消息

127.0.0.1:6379> rpop channell
"x1"
127.0.0.1:6379> rpop channell
"x2"
127.0.0.1:6379> rpop channell
"x3"
127.0.0.1:6379> rpop channell
"x4"
127.0.0.1:6379> rpop channell
"x5"
127.0.0.1:6379> rpop channell
(nil)
127.0.0.1:6379> 

再次查看队列消息

127.0.0.1:6379> lrange channell 0 -1
(empty array)

发布者订阅模式

模式简介

在发布者订阅者模式下,发布者将消息发布到指定的channel里面,凡是监听该channel的消费者都会收到同样的一份消息,这种模式类似于是收音机的广播模式,即凡是收听某个频道的听众都会收到主持人发布的相同的消息内容

此模式常用语群聊天、群通知、群公告等场景。
Subscriber:订阅者
Publisher:发布者
Channel:频道

 

 订阅者监听频道

订阅一个频道
127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "message"订阅多个频道
127.0.0.1:6379> subscribe channel1 channel2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "subscribe"
2) "channel2"
3) (integer) 2订阅匹配频道
127.0.0.1:6379> psubscribe chann*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "chann*"
3) (integer) 1订阅所有频道
127.0.0.1:6379> psubscribe *
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "*"
3) (integer) 1

发布者发布消息

127.0.0.1:6379> publish channel1 test
(integer) 1

验证消息

127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "message"
2) "channel1"
3) "test"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Chrono Engine学习总结】6-创建自定义场景-6.2-chrono中的光线设置

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 上一篇文章中,自己【用sketchup重建了三维场景】,但导入chrono中颜色很不正确,几乎都是白色的,但也不是完全白色。经过…

IDE上传本地仓库到GitHub

IDE上传本地仓库到GitHub 1、选择远程仓库平台2、下载安装Git3、IDE集成Git4、本地项目上传GitHub 1、选择远程仓库平台 1.1、注册远程仓库平台 常见的远程仓库托管平台有: 1)GitHub 域名:https://github.com 介绍:GitHub是全球最…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址:https://download.csdn.net/download/xiaohua1992/89341358 功能介绍: 前台登录:前台登录: ①首页:菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…

Stanford斯坦福 CS 224R: 深度强化学习 (3)

基于模型的强化学习 强化学习(RL)旨在让智能体通过与环境互动来学习最优策略,从而最大化累积奖励。传统的强化学习方法如Q-learning、策略梯度等,通过大量的试错来学习值函数或策略,样本效率较低。而基于模型的强化学习(MBRL)则利用对环境的预测模型来加速学习过程,大大提高了…

参数的本质:详解 JavaScript 函数的参数

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 JavaScript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。 上篇文章…

地理信息系统(GIS)软件开发

地理信息系统(GIS)软件开发是一项复杂且系统性很强的工程,涉及空间数据的采集、管理、分析和展示。以下是一个典型的GIS软件开发流程,包括各个步骤的详细说明。北京木奇移动技术有限公司,专业的软件外包开发公司&#…

面向对象------多态

1.多态的定义 通俗来说,当同一种行为或者事情发生在不同的对象上,这些行为或者事情最终得到的结果不同。 注意:多态要发生在继承的基础上。 例如:彩色打印机和黑白打印机。 彩色打印机和黑白打印机是不同的对象,但…

详细分析Element中的MessageBox基本知识(附Demo)

目录 前言1. 基本知识2. Demo2.1 确认框2.2 警告框2.3 对话框 3. this.$confirm 前言 详细知识推荐阅读:详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版) MessageBox则常用于Vue2 1. 基本知识 MessageBox 是 Element UI 提供…

Liunx学习随笔

Linux学习随笔 一.前期准备1.安装Vmware Workstation软件2.下载linux镜像3.安装操作系统 夕阳无限好,只是近黄昏,时隔一年,重新提笔 没有比脚更远的路,没有比人更高的山 一.前期准备 1.安装Vmware Workstation软件 下载地址&am…

加载页面 跳转 新页面 vue

通常,我们点页面上的详情,或者编辑,需要加载一个新的页面出来。 vue中加载页面的方法: 在父页面中(通常是某个模块目录下的index.vue),先写这行代码: import AddEditForm from ./…

南京观海微电子----升压和降压模块电路解析

(一)升压模块 1. 如果是交流电压升压,那非常简单,只要选择变比合适的变压器就行(1:3和1:4.17); 2. 如果是直流电压升压,从12v升到36v也很容易,可选择用的开关稳压器很多,例如 :Cs5171.Cs5172.Cs5173.Cs5174.Mc33063.…

SQLAlchemy备忘

orm备忘 upsert,存在及更新,不存在则插入 from sqlalchemy.dialects.mysql import insertinsert_stmt insert(FileModule).values(file_pathpar_dict.file, module_keypar_dict.module_key,module_namepar_dict.module_name, project_idpar_dict.proj…

【调和级数】100321. 优质数对的总数 II

本文涉及知识点 调和级数 质数、最大公约数、菲蜀定理 LeetCode100321. 优质数对的总数 II 给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对&#…

[Android]在后台线程执行耗时操作,然后在主线程更新UI

1.Coroutines(官方推荐) Coroutines 提供了一种轻量级的线程管理方式,使得在后台线程执行任务和在主线程更新 UI 变得简单。以下是如何在 Kotlin 中使用 Coroutines 来处理耗时逻辑并更新 UI 的步骤: 添加 Coroutines 依赖: 首…

数据结构·一篇搞定队列!

hello,大家好啊,肖恩又拖更了,你们听我狡辩,前段时间有期中考试,so我就没什么时间写这个,在这给大家道个歉😭😭😭 我后面一定尽力不拖更 那么接下来,我们来看…

Greenplum使用hbase外部表

概述 GP可以通过pxf协议上的hbase外表功能, 在数据库中创建外部表,映射hbase table,以直接在gp中访问 hbase数据,方便将hbase的查询结果集保留在gp中 hbase端准备 HBase基础概念: •HBase 列包含两个组件&#xff1…

粒子辐照环境中相机镜头防护及LabVIEW图像处理注意事项

在粒子辐照环境测试电路板性能的实验中,需要对相机镜头进行有效防护,同时利用LabVIEW进行图像识别和处理。本文将讨论相机镜头防护的关键因素和LabVIEW处理过程中的注意事项,包括防辐射材料选择、辐射屏蔽措施、散热管理、空间布局及LabVIEW软…

c++11:左值引用和右值引用《全家桶》

总结一下C11中涉及到左值引用和右值引用的场景。 1 左值引用和右值引用的区别 左值引用 定义:对左值的引用。目的是避免内存拷贝,类似c中的指针,两个场景:函数传参、函数返回值。 右值引用 定义:对右值的引用。两个场景&#…

【机器学习-k近邻算法-01】 | Scikit-Learn工具包进阶指南:机器学习sklearn.neighbors模块之k近邻算法实战

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

骑行 - 新区永旺出发的环太湖路线

环过好几次太湖,但对路线都没太在意,都是跟着别人走的。这次自己制定一个路书,方便下次自己一个人环太湖时使用。 开始是使用高德地图做路书,只能在PC上做。我用的是网页版,每次选点太麻烦了。要输入地址搜索&#xff…