最近看到一篇文章https://segmentfault.com/a/11… 里面有两句是这样的:

lpush+rpop=Queue(队列)

lpush+brpop=Message Queue(消息队列)

突然不明白redis队列和redis消息队列的异同点?分别适用于什么场景?

我之前有个场景使用到redis队列,分享出来大伙看看用的对不对,是这样的:抢单功能,一个订单只有一个名额,为了防止高并发的情况,我使用redis队列,把抢单的用户id放入队列里面(使用lpush),最后我只取队列的第一个元素(rpop),因为谁抢的快就是谁的。不知道行不行得通?

以上三个疑惑,希望各位求教,谢谢

回答

BRPOP命令和RPOP命令相似,唯一的区别是当列表中没有元素时BRPOP命令会一直阻塞住连接,直到有新元素加入。

另外Redis本就是单线程的,一个订单一个名额的话,你直接放个string不就行了,有这个key则取,无则返回不能下单了(Redis的操作本就是单线程)

消息队列(RabbidMQ, ActiveMQ,Kafka)主要有两种使用模式:生产者->消费者,发布者->订阅者

第一种方式是一对一,后者是一对多

消费掉,队例中数据便不再保存,所谓阅后即焚。消息队列的存和取一般是不同的服务,用于服务之间的异步操作,解耦同步操作。

Redis属于NoSQL类型的缓存/存储,侧重点在支持快速反复读取。数据的产生和消费可能是同一个服务,也可以是多个,如集群。

EDITED:

上面的回答与题主的问题没有太大关系(没有仔细看…), 请不要被误导.

PHP 对和队列的区别,【php】Redis的队列和消息队列的区别是什么?相关推荐

  1. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ

    RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ ...

  2. Redis 使用 List 实现消息队列的利与弊

    作者 | 码哥字节 来源 | 码哥字节 分布式系统中必备的一个中间件就是消息队列,通过消息队列我们能对服务间进行异步解耦.流量消峰.实现最终一致性. 目前市面上已经有 RabbitMQ.RochetM ...

  3. java redis延迟队列_基于redis实现的延迟消息队列

    delay-queue redis实现延迟消息队列 需求背景 最近在做一个排队取号的系统 在用户预约时间到达前XX分钟发短信通知 在用户预约时间结束时要判断用户是否去取号了,不然就记录为爽约 在用户取 ...

  4. redis之如何实现消息队列

    写在前面 本文一起来看下使用redis如何实现消息队列的功能.目前在redis想要实现消息队列的功能有如下的两种方案: 1:基于List的lpush和rpop 2:Streams 这里不将pub/su ...

  5. Pyspider 使用带认证redis集群作为消息队列

    文章目录 概述 pyspider message_queue 源码解读 pyspider的message_queue的配置文件 使用redis集群时的配置文件 使用redis单点,带认证时的messa ...

  6. 消息队列服务器 轻量,PHP的轻量消息队列php-resque使用说明

    消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操 ...

  7. mysql 消息队列_一个简单的 MySQL 批量事务消息队列

    基于 MySQL 的批量事务消息队列 消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息.消息队列的使用场景有很多,比如异步处理任务.应用解耦.流量削锋等等. ...

  8. Redis学习笔记~实现消息队列比MSMQ更方便

    回到目录 什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队 ...

  9. Redis与RabbitMQ作为消息队列的比较

    本文仅针对RabbitMQ与Redis做队列应用时的情况进行对比 具体采用什么方式实现,还需要取决于系统的实际需求 简要介绍 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息 ...

  10. 使用Redis Stream来做消息队列和在Asp.Net Core中的实现

    Redis - Wikipedia 写在前面 我一直以来使用redis的时候,很多低烈度需求(并发要求不是很高)需要用到消息队列的时候,在项目本身已经使用了Redis的情况下都想直接用Redis来做消 ...

最新文章

  1. 分享13个帮助你简化开发的jQuery插件
  2. Java 10更新汇总,新的编译器通吃主流编程语言
  3. 移动端触屏网页的触摸事件
  4. 多分类loss函数本质理解
  5. JavaScript中的各种宽高以及位置总结
  6. element ui 图片上传_游民晚播报:PS5手柄续航情况测试 UI界面概览放出
  7. python for loop步进值_python-对for循环的结果进行排序时保持值连...
  8. python json.dumps参数_json.dumps参数之解
  9. pygame.error: font not initialized的解决及init()到底干了什么
  10. C#下的Raw Socket编程实现网络封包监视
  11. 密码字典生成工具汇总
  12. Windows压力测试工具SuperBenchmarker
  13. 适合练手的10个前端实战项目(附视频+源码)
  14. 基于java五子棋游戏设计与实现
  15. 【转载】华为荣耀V9的手机录屏功能如何开启
  16. 纸机器人的折法_手工折纸教程:一分钟教你折出战斗机器人,看完手里痒痒的...
  17. /usr/bin/ld: 找不到 -lstdc++
  18. 2D制作动画软件:Cartoon Animato 支持win/mac 中文激活版
  19. oracle 根据符号分列,oracle 树结构数据层次分列显示
  20. ABP 依赖注入(1)

热门文章

  1. catalina java opts_CATALINA_OPTS与JAVA_OPTS – 有什么区别?
  2. 使用OpenSSL库函数测试AES-CCM加密算法
  3. 密西根州立大学计算机排名,密歇根州立大学MSU(Michigan State University)计算机科学Computer Science专业排名第91位(2021年THE世界大学商科排名)...
  4. 侯圣文大数据体验课笔记,大数据基础,离线数仓,实时计算
  5. 有关vista系统的激活工具
  6. webpack ——css兼容性处理
  7. c语言 计算华氏温度
  8. Excel+Word批量发邮件的方法
  9. python处理cad_pyautocad python 操作CAD文件
  10. gradle命令中api和implement的区别