redis的消息队列(面试题)
介绍:Redis的队列 使用rpush/lpush操作入队列,使用rpop/lpop出队列。客户端是通过列队的pop来获取消息,然后进行处理,处理完再接着获取消息。如此循环。这就是客户端的生命周期。
问题一:队列空了会有什么影响
如果队列空了,客户端会一直pop队列,这就造成了空轮询。空轮询不但提高了客户端的cpu,也加大了服务端的qps,是的redis的查询效率变低。
处理方式
方式一:可以sleep,但是如果多个消费者就会对每个消费者进行sleep
方式二:通过blpop/brpop进行读取。阻塞读取。如果队列没有消息会阻塞一直到有消息就停止阻塞。几乎没有延时。
问题二:为什么redis消息队列不能100%可靠?
因为没有reids没有ack机制。在发送过程中消息消息是没有消息补偿机制(redis消息持久化是异步的,理论上来说,发出去的消息,都有可能丢失。传统的mq在发送的环节,都有机制确保消息被持久化到硬盘,如果没有持久化到硬盘,发送方会报错,从而进行补偿)。
问题三:延时队列怎么实现的
延时队列:可以通过zset数据结构来实现。将消息序列化成一个value,延时的事件作为score。通过score进行排序。多个线程轮询到期的任务,多个线程是避免万一单线程挂了,提高了可用性。但是要注意避免多个线程同时抢到,可以使用zrem的返回值来获取任务。
redis的消息队列(面试题)相关推荐
- Redis做消息队列,香吗?
来自:架构师修行之路 菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的 ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- PHP + Redis 实现消息队列
Redis做消息队列的好处在于它的轻量级,高并发,延迟敏感,应用场景有 即时数据分析.秒杀计数器.缓存等 Redis做消息队列待解决的问题: 1.消息的可靠性: 没有相应的机制保证消息的消费,当消费者 ...
- redis实现消息队列
redis是一个开源的key-value存储系统.与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串.哈希表.链表.集合.有序集合以及基于这些数据类型的相关操作. ...
- 用redis实现消息队列(实时消费+ack机制)【转】
用redis实现消息队列(实时消费+ack机制) java queue 消息队列 redis 消息队列 首先做简单的引入. MQ主要是用来: 解耦应用. 异步化消息 流量削峰填谷 目前使用的较多的有A ...
- 使用Redis 实现消息队列
一 .为什么要用Redis实现轻量级MQ? MQ的主要作用: 应用解耦 异步化消息 流量削峰填谷 目前使用比较多的是ActiveMQ . RabbitMQ . ZeroMQ . Kafka . Met ...
- 【BCVP】实现基于 Redis 的消息队列
聆听自己的声音 如果自己学不动了,或者感觉没有动力的时候,看看书,听听音乐,跑跑步,休息两天,重新出发,偷懒虽好,可不要贪杯. 话说上回书我们说到了,Redis的使用修改<[BCVP更新]Sta ...
- 程序员过关斩将--redis做消息队列,香吗?
菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的redis做的MQ,很 ...
- c#进阶(4)—— Redis 用于消息队列的存储
1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b: http://www.cn ...
- Redis异步消息队列
一.异步消息队列介绍 个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦.所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列.同时由于使用了消 ...
最新文章
- 使用Pixel Bender Toolkit制作特效——多像素采样(Part 4)
- zabbix邮件监控配置
- 进入it圈10多年了,我不是最优秀的,确是用心的
- Base64编码问题( Convert.ToBase64String)问题
- C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)
- python while循环if_20170403Python控制流if、while、for语句学习
- 《大数据》2015年第2期“动态”——大数据发现银行贷款风险
- python里的define怎么用_如何用(?(DEFINE))在Python中编写正则表达式?
- android 7.0原生动态,Android7.0适配教程,心得
- java并发编程基础 --- 4.2 线程的优先级
- 我对Backbone的认识
- Linux中创建LVM详细步骤
- 教你如何卷积操作进行边缘检测,基础必备
- matlab fft 采样点数,MATLAB中的FFT的采样频率和采样点怎样确定
- 深信服EDR任意用户登录漏洞复现
- python分析数据走势图_python绘制趋势图的示例
- 程序员副业之如何利用空余时间从博客中赚钱?
- 一个基础的反射型xss))
- 计算机系冬日必需品,冬日集结,趣味动员
- javascript简介(概念)