码农知识堂 - 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

  • 相关阅读:
    zlMediaKit 1 task模块--怎么用异步做到同步,怎么基于任务而非基于线程管理
    项目常遇到的问题
    14:00面试,14:08就出来了,问的问题有点变态
    P02014158 马帅(信息论课程作业)
    PyTorch实现注意力机制及使用方法汇总,附30篇attention论文
    大三程序员实习面试经历(Java)
    计算机毕业设计之微信小程序美容理发店预约系统app
    Maven基础概念
    C++实现蜂群涌现效果(flocking)
    1014 Circles of Friends
  • 原文地址:https://blog.csdn.net/Aa112233aA1/article/details/126402527
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号