介绍: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的消息队列(面试题)相关推荐

  1. Redis做消息队列,香吗?

    来自:架构师修行之路 菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的 ...

  2. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  3. PHP + Redis 实现消息队列

    Redis做消息队列的好处在于它的轻量级,高并发,延迟敏感,应用场景有 即时数据分析.秒杀计数器.缓存等 Redis做消息队列待解决的问题: 1.消息的可靠性: 没有相应的机制保证消息的消费,当消费者 ...

  4. ​redis实现消息队列

    redis是一个开源的key-value存储系统.与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串.哈希表.链表.集合.有序集合以及基于这些数据类型的相关操作. ...

  5. 用redis实现消息队列(实时消费+ack机制)【转】

    用redis实现消息队列(实时消费+ack机制) java queue 消息队列 redis 消息队列 首先做简单的引入. MQ主要是用来: 解耦应用. 异步化消息 流量削峰填谷 目前使用的较多的有A ...

  6. 使用Redis 实现消息队列

    一 .为什么要用Redis实现轻量级MQ? MQ的主要作用: 应用解耦 异步化消息 流量削峰填谷 目前使用比较多的是ActiveMQ . RabbitMQ . ZeroMQ . Kafka . Met ...

  7. 【BCVP】实现基于 Redis 的消息队列

    聆听自己的声音 如果自己学不动了,或者感觉没有动力的时候,看看书,听听音乐,跑跑步,休息两天,重新出发,偷懒虽好,可不要贪杯. 话说上回书我们说到了,Redis的使用修改<[BCVP更新]Sta ...

  8. 程序员过关斩将--redis做消息队列,香吗?

    菜菜哥,我刚做完了一个订单系统,感觉很简单呀 说说看,大量的订单状态怎么处理的? 我设计的时候可是考虑了这一点,所以用了异步处理,采用了MQ 那用的什么MQ呢,透露一下呗 我用的redis做的MQ,很 ...

  9. c#进阶(4)—— Redis 用于消息队列的存储

    1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b:  http://www.cn ...

  10. Redis异步消息队列

    一.异步消息队列介绍 个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦.所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列.同时由于使用了消 ...

最新文章

  1. 使用Pixel Bender Toolkit制作特效——多像素采样(Part 4)
  2. zabbix邮件监控配置
  3. 进入it圈10多年了,我不是最优秀的,确是用心的
  4. Base64编码问题( Convert.ToBase64String)问题
  5. C语言递归实现二叉树(二叉链表)的三种遍历和销毁操作(实验)
  6. python while循环if_20170403Python控制流if、while、for语句学习
  7. 《大数据》2015年第2期“动态”——大数据发现银行贷款风险
  8. python里的define怎么用_如何用(?(DEFINE))在Python中编写正则表达式?
  9. android 7.0原生动态,Android7.0适配教程,心得
  10. java并发编程基础 --- 4.2 线程的优先级
  11. 我对Backbone的认识
  12. Linux中创建LVM详细步骤
  13. 教你如何卷积操作进行边缘检测,基础必备
  14. matlab fft 采样点数,MATLAB中的FFT的采样频率和采样点怎样确定
  15. 深信服EDR任意用户登录漏洞复现
  16. python分析数据走势图_python绘制趋势图的示例
  17. 程序员副业之如何利用空余时间从博客中赚钱?
  18. 一个基础的反射型xss))
  19. 计算机系冬日必需品,冬日集结,趣味动员
  20. javascript简介(概念)

热门文章

  1. 循环-菲波那切数列II
  2. 网络协议 -- ARP和RARP协议
  3. 华为云文档数据库服务更安全
  4. UVA 10115 Automatic Editing (字符串的替换和查找)
  5. Android————一个简单的新闻面板
  6. Leiden算法介绍
  7. MOSFET及MOSFET驱动电路总结
  8. AD快捷键、常见问题汇总
  9. 基于51单片机篮球计分器proteus仿真设计
  10. qpython3下载-QPython3下载