一、场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货。所谓的订单自动确认收货,就是在在特定的时间,执行一条update语句,改变订单的状态。 二、思路 最笨重的做法,通过linux后台定时任务,查询符合条件的订单,然后update。最理
原创 2017-05-16 15:52:05
1259阅读
# Redis实现订单队列 ## 简介 订单队列是指将待处理的订单按照先后顺序排队,依次进行处理的一种数据结构。Redis是一个高性能的key-value存储数据库,被广泛应用于缓存、消息队列等场景。本文将介绍如何利用Redis实现一个简单的订单队列系统,并提供相应的代码示例。 ## 订单队列的设计 订单队列通常由两部分组成:生产者和消费者。生产者负责将订单添加到队列中,而消费者则从队列
原创 2024-03-04 06:58:23
88阅读
思路:   订单量大的话可以用PHP写个脚本用pnctl多开几个进程去处理消息队列  用户抢购订单时先生成订单  减库存及其他xxxx事情 让消息队列去做  用户之间跳到订单确认页既可以提升用户下单速度又能保障库存的一致性/** * Created by PhpStorm. * User: yann * Date: 2017/8/3 * Time: 上午10
文章目录单体系统中实现一人一单集群中实现一人一单 单体系统中实现一人一单如果在秒杀过程中,需要实现一人一单的需求,那么这时候可以有2种方法: ①修改数据库的结构:因为需要实现一人一单的需求,那么只需要给订单表中的user_id和voucher_id添加联合的唯一约束即可,那么就可以实现一人一单的需求了。 ②通过添加锁:在用户购买订单之前,判断是否可以获取到锁,如果可以,那么就可以进行判断是否已经
# Redis延时队列取消订单 ## 引言 在现代的电商平台中,用户可以随时取消自己的订单。然而,当订单量增加时,取消订单操作可能会变得非常耗时,从而影响其他关键业务的执行。为了解决这个问题,我们可以使用Redis延时队列来处理订单取消操作。本文将介绍如何使用Redis延时队列来取消订单,并提供相应的代码示例。 ## 什么是Redis延时队列Redis延时队列是一种用于处理延时任务的数
原创 2023-09-29 04:00:07
195阅读
将请求存入redis 为了模拟多个用户的请求,使用一个for循环替代 //redis数据入队操作 $redis = new Redis(); $redis->connect('127.0.0.1',6379); for($i=0;$i<50;$i++){ try{ $redis->lPush('te
原创 2022-01-21 10:41:45
270阅读
延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢?一、背景先看看一下业务场景:1.会员过期前3天发送召回通知2.订单支付成功后,5分钟后检测下游环节是否都正常,比如用户购买会员后,各种会员状态是否都设置成功3.如何定期检查处于退款状态的订单是否已经退款成功?4.实现通知失败,1,3,5,7分钟重复通知,直到对方回复?通常解决以上问题,最简单直接的办法就是
转载 2024-07-31 16:23:31
71阅读
写在前面需求是做一个秒杀系统,比如大家来抢100台手机,先到先得。查阅了网上很多用redis实现秒杀的demo(java语言),竟然没一个能用的!!!有些是php的,没闲心研究了,现在说说为什么不能用:绝大多数的DEMO都是基于redis的watch特性的事务实现①,个别是基于redis分布式锁实现②。当然还有些用了脚本的,我也没仔细看是lua还是调用redis指令,哪有那个闲心去研究哇。照顾一下
转载 2023-08-22 21:43:50
52阅读
实战一:list类型 最简单的消息队列 首先得明白什么时候会用到消息队列?什么是消息队列? 举个简单的应用场景:下单 用户 ----> 订单API —>订单数据入库 商品服务模块 —>减库存操作 这可以是两个单独的模块 也可以理解成是两个服务 现在不都讲究服务化嘛? 正常的业务逻辑就是用户通过api然后订单数据入库 然后再通过商品服务模块去减少库存或者用mysql里面的事务 订单
转载 2023-08-10 15:11:09
338阅读
一、场
原创 2022-11-25 12:13:39
129阅读
一.生产消费模型 什么是消息队列?在生活中,其实有很多的例子,都类似消息队列。比如:工厂生产出来的面包,交给超市,商场来出售,客户通过超市,商场来买面包,客户不会针对某一个工厂去选择,只管从超市买出来,工厂也不会管是哪一个客户买了面包,只管生产出来之后,交给超市,商场来处理。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可
转载 2024-06-24 21:25:51
11阅读
smtp.163.com25gujinrong1234 1邮件2队列3redis   4cache5基础控制器6定时任务7policyhttps://www.lijinma.com/blog/2016/12/14/laravel-policy/http://laravelacademy.org/post/6823.html 1$doc =sotrge_pat
转载 2024-06-29 14:21:53
46阅读
一、redisTemplate对于set集合的使用1、需求背景在做号码下单的时候,我需要去调运营商的接口,查询号码、去对客户的身份信息校验、然后去下预约单、号码锁定、正式单...首先,号码锁定需要预约单返回的订单号,正式单需要号码锁定返回的seq与预约单返回的订单号2、解决方案接口的调用顺序   这里,我可以使用一个线程编排去处理这个事情首先,号码查询与客户信息校验可以同步去进
目录一、秒杀优化 - 异步秒杀思路二、秒杀优化 - Redis 完成秒杀资格判断 1、VoucherServiceImpl,新增优惠券的同时加入到Redis 2、编写lua,基于lua完成一人一单,seckill.lua3、调用seckill.lua脚本,VoucherOrderServiceImpl 4、基于阻塞队列实现秒杀异步下单5、小总结 三、认识Re
原本存在问题原本的优惠券秒杀业务中,查询优惠券、查询订单、减库存、创建订单都是直接访问的MySQL数据库,其中减库存和创建订单是写操作,当高并发的时候会给数据库造成较大的压力。基于阻塞队列的异步解决办法: 在redis中:利用string结构保存优惠券的库存利用set集合(可以存多个值且不可重复)来实现一人一单功能: 同时利用lua脚本实现上述两个操作的原子性 基于R
平时我们常看到的消息队列基本上就是RabbitMQ、Kafka,但是在文中也指出了,在面对一组消费者队列的时候,如果对消息队列的可靠性要求不是特别高的时候,redis可以达到要求,而且其实现相较于RabbitMQ和Kafka非常简单。异步消息队列  redis中的list非常适合做异步消息队列,使用lpop、rpop出队列,lpush、rpush入队列。这点非常容易理解,python中的list也
## Redis延迟队列实现订单取消指南 在现代电商系统中,处理订单的逻辑常常涉及到复杂的操作,比如订单的创建、支付和取消。为了确保在指定的时间内自动取消未支付的订单,使用 Redis 的延迟队列来实现是一个有效的方案。下面将为大家详细介绍整个流程以及代码实现。 ### 流程概述 为了实现 Redis 延迟队列中的订单取消功能,可以将其流程划分为以下几个步骤。 | 步骤 | 描述 | |-
原创 10月前
86阅读
业务需求业务里面需要文章的定时发布功能,因此打算采用mq和redis来实现一下定时发布的功能。mq之前用过了。基于一些私信交换机地信息过期策略实现。所以这次采用redis。并且打算将这个延迟任务的服务集成在一个微服务里面,提供对外的feign的远程调用接口,这样就可以一劳永逸一下。博客内容本次redis实现将分为多个文章来详细描述一下。并且介绍一些重要功能的实现思路和重要代码以及redis的一些特
转载 2024-07-01 19:58:43
56阅读
文章目录延时队列的应用一、实现延时队列效果的方法1、RabbitMQ1.1、TTL DLX实现延时队列1.1.1、TTL DLX介绍1.1.2、DLX延时队列实现 延时队列的应用延时队列在项目中的应用还是比较多的,尤其像电商类平台:订单成功后,在30分钟内没有支付,自动取消订单外卖平台发送订餐通知,下单成功后60s给用户推送短信。如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存淘宝
前言工作中常常会遇到这样的场景,如订单到期未支付取消,到期自动续费等,我们发现延迟队列非常适合在这样的场景中使用。常见的延迟队列的优秀实现有rabbitMQ的死信队列,RocketMQ的延迟队列等,但是了有时候项目没有特别的大,没有引入类似的消息中间件,但是了又遇到了特别适合使用延迟队列的场景,我们一般会利用已有的redis实现一个简陋的延迟队列。常见的实现方式有监听过期key,使用
  • 1
  • 2
  • 3
  • 4
  • 5