码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java面试:Redis消息队列实现异步秒杀


    消息队列(Message Queue),字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色:

    消息队列:存储消息。

    生产者:发送消息到消息队列,在秒杀任务中负责判断秒杀时间和库存,校验消费者权限是否是一人一单,发送优惠券id和用户id到消息队列中。

    消费者:从消息队列获取消息并处理消息,接受到订单消息之后,完成下单。

    Redis提供了三种不同的方式来实现消息队列:

    list结构:基于List结构模拟消息队列。

    PubSub:基本的点对点消息模型。

    Stream:比较完善的消息队列模型。

    在这里插入图片描述
    基于List结构模拟消息队列

    消息队列(Message Queue),字面意思就是存放消息的队列。而Redis的list数据结构是一个双向链表,很容易模拟出队列效果。

    队列是入口和出口不在一边,因此我们可以利用:LPUSH 结合 RPOP、或者 RPUSH 结合 LPOP来实现。

    不过要注意的是,当队列中没有消息时RPOP或LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。因此这里应该使用BRPOP或者BLOPO来实现阻塞效果。
    在这里插入图片描述
    List的消息队列可利用Redis存储,不受限于JVM内存上限,是基于基于Redis的持久化机制,数据安全性有保证,同时也可以满足消息队列的有序性。但只支持但消费者,无法避免消息丢失是它最大的问题。

    基于PubSub的消息队列

    PubSub(发布订阅)是Redis2.0版本引入的消息传递模型。顾名思义,消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息。对应channel发送消息后,所有订阅者都能收到相关消息。

    SUBSCRIBE channel [channel] :订阅一个或多个频道。

    P

  • 相关阅读:
    Shiro去掉登录时url里的JSESSIONID,允许分号 中文参数
    Java电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现|电商API接口接入
    WPS文件丢失如何恢复?4个方法教你快速恢复!
    代码格式规范--clang-format的安装及配置
    YOLOv5算法改进(7)— 添加单层注意力机制(包括代码+添加步骤+网络结构图)
    2022年《微信小程序从基础到uni-app项目实战》
    【TensorFlow深度学习】张量Broadcasting机制与数学运算实践
    JavaScript参考手册 Array函数(更新完成)字数:22787字(搞定!)
    MVCC 过程中会加锁吗?
    ubuntu报Unit firewalld.service could not be found.
  • 原文地址:https://blog.csdn.net/Aa112233aA1/article/details/126402527
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号