redis消息队列

redis消息队列

redis可以直接实现消息队列,无需学习别的技术

list——本质是链表,数据存储

启动同一个IP和端口的2台客户端,一边阻塞弹出,一边添加元素

在20s内,如果有元素就弹出,没有元素就等待,超过20s就结束等待

优点:先进先出,消息有序

没有内存上限

有持久化机制,保证数据安全

缺点:

因为pop是remove and get,可能导致消息丢失,刚取出消息没来得及处理就宕机了

只能被一个消费者处理

pubsub——不可靠

-- 订阅一个或多个频道
subscribe 
-- 发送消息给一个频道
publish
-- 订阅格式匹配的频道
psubscribe
通配符

?一个字符

*0个或多个

[]指定字符

再启动一个客户端

确保都操作数据库0——select 0

我是先发送再订阅,所以msg1没有收到,但是订阅之后再发的msg2、msg3都被收到了,而且消费者会一直处于订阅就是接收消息状态,天生就是阻塞式的

pmessage order.* order.queue msg2表示订阅的order.*频道接收到了order.queue频道发布的msg2消息

pmessage order.queue order.queue msg2表示订阅的order.queue频道接收到了order.queue频道发布的msg2消息

发布消息的返回值就是订阅该频道的消费者数量!!

所以一开始发布消息时没消费者订阅该频道,返回值是0,后面的是2,最后一个发布到one,只有一个消费者订阅

优点:

支持多个生产者,多个消费者

缺点:

不支持数据持久化:本身就是消息发送,不是数据存储,不支持持久化

无法避免消息丢失:如果发布的消息没有消费者订阅,则直接丢失

消息堆积有上限:发布消息时有消费者订阅,则会存储到消费者缓冲区,缓存空间有上限

不太可靠!!

stream

-- 添加消息
xadd 队列名称 默认自动创建 消息上限 消息id 字段 值 
-- 消息长度
xlen 队列名称
-- 读取消息,阻塞时长为0表示一直阻塞
xread 读取数量 是否阻塞 阻塞时长 streams 队列名称 读取起始id

循环读取最新消息时可能有漏读,在处理消息时,收到了很多条,但是下次只会处理最新的,造成漏读

同一个消息可以被不同消费者反复读取,数据持久化

可以阻塞读取

stream消费者组——解决漏读

只要在消费者组就是竞争关系,处理消息速度加快,避免消息堆积

记录最后一个被处理的消息,有点像PC程序计数器,解决漏读

消费者接受到消息后存入pending-list,当处理完后,移除,解决消息丢失

如何让消费者拿到我想发送给他的消息?

订阅多个频道,比如我想拿到order.queue,又想拿到order.one,为了确保该消费者一定能竞争到queue,就订阅order.queue和order.*

pending-list和消费者缓冲区有什么区别?

xgroup create 队列名称 消费者组名称 起始id 是否自动创建(默认false)

xreadgroup group 消费者组名称 消费者名称 读取数量 是否阻塞 阻塞时长 自动确认  streams 队列名称 起始id

一个消息只能被读取一次

以下是正常情况,获取消息并返回ack

如果收到消息就宕机了,没来及ack则会存储在pending-list中,如何查看pending-list勒?

-和+表示从最小到最大的id

读取消息时先用>,读取未消费的消息。如果ack过程中出现异常,则查看pending-list中的消息,然后用0,读取已经消费但是没有Ack的消息

伪代码

redis队列

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

泛域名SSL证书有什么优势?

泛域名SSL证书,又称通配符证书,是一种特殊的数字证书类型,设计用于同时保护一个主域名及其所有同级子域名。具体而言,如果您为某个域名(如 example.com)申请了泛域名SSL证书,该证书将不仅适用于…

Thingsboard PE 白标的使用

只有专业版支持白标功能。 使用 ThingsBoard Cloud 或安装您自己的平台实例。 一、介绍 ThingsBoard Web 界面提供了简便的操作,让您能够轻松配置您的公司或产品标识和配色方案,无需进行编码工作或重新启动服务。 系统管理员、租户和客户管理员可以根据需要自定义配色方案、…

2024年 Mathorcup高校数学建模竞赛(A题)PCI 规划问题 | 多目标规划解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200人完成了建模与思路的构建的处理了~ 本篇文章是鹿鹿学长经过深度思考,独辟蹊径,通过多目标规划解析解决非法野生动植物贸易问题。结合神经网络、集成学习、贝叶斯网…

Web程序设计-实验02 CSS页面布局

【实验主题】 影视网站前台模板页设计 【实验任务】 1、浏览并分析多个影视网站(详见参考资源,建议自行搜索更多影视网站)的整体版面布局,对比同一网站不同页面(主页、列表页、详情页)的元素异同——剔除…

故障诊断 | 基于LSTM的滚动轴承故障诊断

效果 概述 基于LSTM(长短期记忆网络)的滚动轴承故障诊断是一种利用深度学习技术来预测滚动轴承是否存在故障的方法。下面是一个基本的滚动轴承故障诊断的流程: 数据收集:首先,需要收集与滚动轴承相关的振动信号数据。这些数据可以通过传感器或振动监测系统获取。收集的数…

如何对输入信号产生一个固定的时移(CODESYS信号时移FB)

1、同步性问题(跟随给定和跟随反馈的区别) 随动系统同步性问题(跟随给定和跟随反馈的区别)-CSDN博客文章浏览阅读39次。1、运动控制比例随动运动控制比例随动系统_正运动随动系统-CSDN博客PLC如何测量采集编码器的位置数据,不清楚的可以参看我的另一篇博文:三菱FX3U PLC高速…

【绩效管理】建立员工绩效考核机制,提升企业绩效管理水平

随着企业的迅猛发展,其内部管理问题日益突出,已经制约了企业的进一步发展。一方面,员工工作懒散、积极性不高,出错的次数也逐步上升,另一方面,管理者也无法有效评价员工的工作好坏。面对这些问题&#xff0…

计算机网络常见面试总结

文章目录 1. 计算机网络基础1.1 网络分层模型1. OSI 七层模型是什么?每一层的作用是什么?2.TCP/IP 四层模型是什么?每一层的作用是什么?3. 为什么网络要分层? 1.2 常见网络协议1. 应用层有哪些常见的协议?2…

02—js数据类型及相互转换

一、数据类型 js把数据分为两类 基本类型:string number boolean undefined null 引用类型:object(fuction(可以执行) array(数值下标,内部数据是有序的)) 1.Number:数值类型,整数和小数 &#xff08…

SpringMVC原理及工作流程

组件 SpringMVC的原理主要基于它的各个组件之间的相互协作交互,从而实现了Web请求的接收,处理和响应。 它的组件有如下几个: DispatcherServlet前端控制器 HandlerMapping处理器映射器 Controller处理器 ModelAndView ViewResolver视图…

Mysql内存表及使用场景(12/16)

内存表(Memory引擎) InnoDB引擎使用B树作为主键索引,数据按照索引顺序存储,称为索引组织表(Index Organized Table)。 Memory引擎的数据和索引分开存储,数据以数组形式存放,主键索…

前端CSS讲义1

什么是 CSS? CSS 指层叠样式表 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部样式表通常存储在 CSS 文件中 多个样式定义可层叠为一 样式对网页中元素…

DAY03|203.移除链表元素、707.设计链表、206.反转链表

203.移除链表元素、707.设计链表、206.反转链表 LeetCode 203.移除链表元素LeetCode 707.设计链表LeetCode 206.反转链表双指针法递归法 LeetCode 203.移除链表元素 注意,在dummy上操作,返回也返回dummy->next 如果头铁想返回head,那样会…

2024高交会-2024深圳高新技术展-高新技术成果交易会

2024高交会-2024深圳高新技术展-2024高新技术成果展-中国高校技术交易会-第26届高交会-深圳高交会-深圳高科技展-深圳新科技展-深圳高新技术成果展 第二十六届中国国际高新技术成果交易会(简称高交会) 时间:2024年11月15日-19日 地址&#…

点击按钮(文字)调起elementUI大图预览

时隔一年,我又回来了 ~ 最近在做后台,遇到一个需求,就是点击“查看详情”按钮,调起elementUI的大图预览功能,预览多张图片,如下图: 首先想到的是使用element-ui的el-image组件,但它是…

NzN的数据结构--交换排序

篇接上文,今天要学习的就是交换排序,这么励志的日更博主,你怎么能不三连一下呢? 目录 一、基本思想 二、冒泡排序 三、快速排序 1. hoare版本 2. 挖坑法 3. 前后指针法 4. hoare版本优化 5. 非递归实现快速排序 一、基本…

模拟移动端美团案例(react版)

文章目录 目录 概述 项目搭建 1.启动项目(mock服务前端服务) 2.使用Redux ToolTik(RTK)编写store(异步action) 3.组件触发action并渲染数据 一、渲染列表 ​编辑 二、tab切换类交互 三、添加购物车 四、统计区域功能实现 五、购物车列表功能实现 六、控制…

【Java集合进阶】泛型的通配符和综合练习

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

加速度JUSDO | 电子元器件商城行业调研及运营方案

一、行业背景与竞品分析 随着电子元器件行业的快速发展,线上元器件商城已成为行业交易的重要渠道。目前市场上存在多个知名的元器件商城,如立创、云汉芯城、贸泽商城等,它们都提供了丰富的元器件产品和便捷的线上交易服务。 立创商城&#x…

蓝桥杯第十三届c++大学B组详解

目录 1.九进制转十进制 2.顺子日期 3.刷题统计 4.修剪灌木 5.x进制的减法 6.统计子矩阵 7.积木画 8.扫雷 9.李白打酒 10.砍竹子 1.九进制转换十进制 题目解析:就是将2022的每一位拿出来乘以9的n-1次方的和就是最终答案。次方是从0开始的到n-1. #include &…