如何保证 Redis 消息队列中的数据不丢失?

Redis 最常见的业务场景就是缓存读取与存储,而随着时间的推移,有人开始将它作为消息队列来使用了,并且随着 Redis 版本的发展,在 Redis.2.0.0 中新增了发布订阅模式(Pub/Sub)代表着官方开始正式支持消息队列的功能了,直到今天为止还有部分公司在实现轻量级的消息队列时,依然会选择使用 Redis 来实现。并且消息队列的知识点也会作为一个进阶型的面试题经常出现在面试当中。

我们本文的面试题是,什么是消息队列?为什么要用消息队列?Redis 实现消息队列的方式有几种?如何保证 Redis 消息队列中的数据不丢失?

典型回答

消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式,它的实现流程是一方会将消息存储在队列中,而另一方则从队列中读取相应的消息,消息队列提供了异步的通信协议,也就是说消息的发送者和接收者无需同时与消息队列进行交互。

消息队列中有几个重要的概念:

  • 生产者:是指发布消息的一方;
  • 消费者:接收消息的一方,也叫订阅者或订阅方;
  • 通道(channel):也叫频道,它可以理解为某个消息队列的名称,首先消费者先要订阅某个 channel,然后当生产者把消息发送到这个 channel 中时,消费者就可以正常接收到消息了。

它们的执行流程如下图所示: image.png 使用消息队列有如下好处:

  • 削峰填谷:将某一个时刻急

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

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

相关文章

英语笔记:写作:Limiting the use of disposable plastic bags

Limiting the use of disposable plastic bags 限制使用一次性塑料袋 Recently,limiting the use of disposable plastic bags has been brought to popularattention in china. No one denies that they once gained great popularity in ourdaily life. However, what would…

9款基于CSS3 Transitions实现的鼠标经过图标悬停特效

之前给大家分享了很多css3实现的按钮特效。今天给大家分享9款基于CSS3 Transitions实现的鼠标经过图标悬停特效。这款特效适用浏览器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗. 不支持IE8及以下浏览器。效果图如下: 在线预览 源码下…

Redis 如何实现分布式锁?

锁是多线程编程中的一个重要概念,它是保证多线程并发时顺利执行的关键。我们通常所说的“锁”是指程序中的锁,也就是单机锁,例如 Java 中的 Lock 和 ReadWriteLock 等,而所谓的分布式锁是指可以使用在多机集群环境中的锁。 我们本文的面试题是,使用 Redis 如何实现分布式…

scala 函数中嵌套函数_如何在Scala中将函数转换为部分函数?

scala 函数中嵌套函数First, lets see what is a function and a partial function, and then we will see their conversion process. 首先,让我们看看什么是函数和部分函数,​​然后看它们的转换过程。 Function in Scala is a block of code that i…

英语笔记:台词

Memories are too important. 记忆弥足珍贵。 You won’t be sad forever, Elena. 悲伤不会相伴一生,艾琳娜。 When you lose someone it stays with you. 当你失去了某个人,那种感觉如影随行。 Always reminding you of how easy it is toget hurt. …

第二章关系数据库

第二章关系数据库2.1 关系模型概述(略)2.2 关系操作2.2.1_基本关系操作2.2.2_关系数据库语言的分类2.3 关系的完整性2.3.1_关系的三类完整性约束2.3.2_实体完整性2.3.3_参照完整性2.3.4_用户定义的完整性2.4 关系代数2.4.1_传统的集合运算2.4.2_专门的关…

线程----Monitor(互斥锁)类设置超时值

Monitor类与Lock语句相比,Monitor类的主要优点是:可以添加一个等待被锁定的超时值。缺点:开销非常大using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.T…

常用的 Redis 优化手段有哪些?

每个软件的常规操作有两种,一种是使用,另一种就是调优,对于 Redis 来说也是一样。关于 Redis 调优的问题一般会出现在 Redis 面试的后期,以此来考察面试者对于 Redis 的实际应用掌握,以及对于 Redis 高性能的追求与理解,因此本文就来重点的聊一聊关于 Redis 调优的相关问…

英语笔记:词组句子:1112

Survey 调查 Reveals 显示 show indicate Submits 呈送、提交 Launches 发动、发起 Generates 产生、创造 Staff 员工 Audience 观众、听众 Officials 官员、高级职员 Partners 合伙人、配偶 Shortage 短缺 Exits 出口 Departures 离开、离职 Absences 不在、缺席 …

Java RandomAccessFile writeLong()方法与示例

RandomAccessFile类writeLong()方法 (RandomAccessFile Class writeLong() method) writeLong() method is available in java.io package. writeLong()方法在java.io包中可用。 writeLong() method is used to write the long value to the file as 8 bytes directly without …

第三章关系数据库标准语言SQL

第三章关系数据库标准语言SQL3.1_SQL的特点3.3_数据定义3.3.1_基本表的定义、删除与修改3.3.3_索引的建立与删除3.4_数据查询3.4.1_查询时消除重复行3.4.2_涉及空值的查询3.4.3_BETWEEN AND的使用3.4.4_字符匹配3.4.5_聚集函数3.5_数据更新3.5.1_插入数据3.5.2_修改数据3.5.3_删…

使用 Redis 如何实现延迟队列?

延迟消息队列在我们的日常工作中经常会被用到,比如支付系统中超过 30 分钟未支付的订单,将会被取消,这样就可以保证此商品库存可以释放给其他人购买,还有外卖系统如果商家超过 5 分钟未接单的订单,将会被自动取消&…

适用响应式 Web UI 框架

1. BootstrapBootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等。官方网站: http://twitte…

VC 忽略警告的方法

在vs2003, vs2005中用sprintf 会出现warning C4996: sprintf was declared deprecated或warning C4996: strcpy was declared deprecated或warning C4996: strcat was declared deprecated的警告。这里给出解决问题的一些方法。方法一:调用VS2005鼓吹的那些带“_s”…

第四章数据库安全性

第四章数据库安全性4.1_自主存取控制方法4.1.1_授权与回收4.2_数据库角色4.2.1_角色的创建4.2.2_给角色授权4.2.3_将一个角色授予其他的角色或用户4.2.4_角色权限的收回4.1_自主存取控制方法 4.1.1_授权与回收 1.GRANT: GRANT <权限>[,<权限>]… [ON <对象类型…

observable_Java Observable notifyObservers()方法与示例

observable可观察的类notifyObservers()方法 (Observable Class notifyObservers() method) Syntax: 句法&#xff1a; public void notifyObservers();public void notifyObservers(Object o);notifyObservers() method is available in java.util package. notifyObservers(…

Redis 面试题补充与汇总

前面的 12 个章节对 Redis 的面试题做了一个系统的讲解,那么本文将对 Redis 的热门面试题再做一个补充,力求覆盖到更多的 Redis 面试点。 Redis 持久化 Redis 持久化总共有以下三种方式: 快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;…

第五章数据库完整性

第五章数据库完整性5.1_数据库完整性概述5.2_实体完整性5.2_参照完整性5.3_用户定义的完整性5.1_数据库完整性概述 1.数据库的完整性&#xff1a; 数据的正确性和相容性 2.数据的完整性和安全性的区别&#xff1a; 数据的完整性&#xff1a;防止数据库中存在不符合语义的数据&a…

KVC/KVO实现原理分析

2019独角兽企业重金招聘Python工程师标准>>> 1. 函数调用&#xff08;消息&#xff09;实现分析&#xff1a; 我们看这条语句&#xff1a; [代码]c#/cpp/oc代码&#xff1a; 1 [self.person setValue:"Vincent"forKey:"name"]; 就会被编译器…

英语笔记:写作:Nothing succeeds without a strong will

Nothing succeeds without a strong will 没有坚强的意志将一事无成 There is a widespread humorous saying that “Quitting smoking is theeasiest thing in the world. I’ve done it for hundreds of times.” 1. Funny as itis, the saying ironically reflects the fac…