线上的秒杀等业务场景,需要类似的解决方案,需要平安度过同时抢购带来的流量峰值的问题。如果此时还用mysql做消息队列是什么容易挂掉的,如果死轻量级的秒杀我们完全可以用redis来应对。

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。

要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。

redis消息队列解决削峰原理

创建一个Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一、秒杀文件

1、把奖品预先写入redis

2、把参与秒杀中奖的用户id、奖品、秒杀时间写入redis列表里。

3、判断是否秒杀完预先设置的数量,如果秒杀完直接返回秒杀结束

二、队列写数据库文件

不断判断redis list是否有秒杀用户信息,如果存在就写入mysql数据储存。

redis做流量削峰消息队列常用的指令

Lpush:$redis->lpush(‘key’,’value’);//增,将值value插入到列表key的表头,不存在就创建

Rpush:$redis->rpush(‘key’,’value’);//增,将一个值value插入到列表key的表尾

Lpop:$redis->lpop(‘key’);//删,移除并返回列表key的头元素

Rpop:$redis->rpop(‘key’);//删,移除并返回列表key的尾元素

Llen:$redis->llen(‘key’);//返回列表key的长度,不存在key返回0

php redis查看队列长度,php redis做消息队列解决流量削峰常用的5个指令相关推荐

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

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

  2. 使用redis做消息队列mq的总结

    总结 目前使用redis做消息队列的的方式有3中,list,      publish/subscribe,       stream list做mq的总结 使用方法 1. 生产者可以 lpush 写 ...

  3. springboot使用redis实现消息队列功能,redis使用list和stream实现消息队列功能,redis实现消息队列的风险点分析

    文章目录 写在前面 基于list的消息队列解决方案 使用list基本实现消息队列 阻塞式消费,避免性能损失 替换while(true) 实现消息幂等 保证消息可靠性 基于stream的消息队列解决方案 ...

  4. ActiveMQ做消息队列拦截功能

    ActiveMQ做消息队列拦截功能 操作步骤 操作步骤 首先先到ActiveMQ官网下载最新的最稳定的版本 http://activemq.apache.org/activemq-5158-relea ...

  5. 秒杀系统流量削峰这事应该怎么做?为什么要削峰呢?

    点击上方"朱小厮的博客",选择"设为星标" 回复"1024"获取独家整理的学习资料 如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线 ...

  6. 秒杀系统流量削峰,这事应该怎么做?

    如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很 直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一 个特别高的流量峰值,它对资源 ...

  7. 【商城秒杀项目】-- 流量削峰应该怎么做

    如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一个特别高的流量峰值,它对资源的消耗 ...

  8. 04 流量削峰这事应该怎么做?

    如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一个特别高的流量峰值,它对资源的消 ...

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

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

最新文章

  1. 第一篇随笔,通常都是内容空洞的。
  2. 关于红酒的资料收集-2
  3. 【Android 应用开发】 Android 相关代码规范 更新中 ...
  4. 总结一下qsort()函数的使用与注意
  5. Rsync下行同步+inotify实时同步介绍和部署
  6. Setup a Windows Server 2012 ×××
  7. (3.1)HarmonyOS鸿蒙单击事件4种写法
  8. xlsx怎么设置行高列宽_7米面宽的3栋别墅,两款复式进深达到18米,第一款主体只要16万...
  9. hbase客户端_好文推荐:全网最细致的 HBase 内核解析
  10. 【学习笔记】计算机导论之计算机软件
  11. Hibernate4实战 之 第二部分:Hibernate的基本配置
  12. 平安银行支付接口 PHP ECSHOP
  13. 学会System Generator(19)增量调制(DM)编码解码
  14. python面板数据模型操作步骤_面板数据模型估计一般要做哪些步骤?
  15. 天翼对讲机写频软件_【对讲机的那点事】摩托罗拉GM950E/I 车载台如何编程?(上)...
  16. 数学建模 matlab MATLAB机器学习 分类方法 支持向量机分类 乳腺癌的诊断
  17. linux看门狗定时器,看门狗定时器的作用
  18. [SWF Investigator] Adobe官方开源 swf解析/编辑工具
  19. 多个安卓设备投屏到电脑_华为手机可以投屏到电脑,那其他安卓手机呢?其实非常简单...
  20. 不知道Android开发中有哪些权限?看这里

热门文章

  1. 海思处理器在单板上使用GDB的方法
  2. vue绑定background_vue动态绑定background:url绑不上的问题
  3. PCF8591数模转换模块与数码管的小实例
  4. 大文件上传时如何做到秒传?(荣耀典藏版)
  5. DVE14.1.4 安装和破解以及C#运行时弹框正在使用框(Trial)的去掉(CSDN网上资料整合,感谢强大的CSDN)
  6. USB规范中EHCI,UHCI,OHCI区别
  7. java Appium之环境搭建
  8. Docker运行MySql镜像
  9. 本地提交到github时出现错误
  10. RabbitMQ安装和使用(docker版本)