首页 > 其他分享 >关于如何防止重复订单提交

关于如何防止重复订单提交

时间:2024-01-23 09:55:36浏览次数:27  
标签:处理 重复 redis 订单号 订单 提交

这是个面试中非常常见的问题,也是并发请求中常见的情况,对于数据的一致性有很高要求系统都是要做的

主要有以下四个解决思路:

1、提交订单按钮置灰,短时间内不可重复提交;

2、后端预生成全局唯一订单号。前端进入下单页面去请求获取该订单号,然后下单,后端通过此唯一订单号进行处理,已处理过的就不用重复处理了。

3、前端生成全局唯一订单号。这个就和第2中差不多,只是前端不需要去请求后端接口,自行生成唯一订单号。

4、使用redis处理。简单理解就是,利用redis的过期时间这个功能。key可以设置为用户ID + 分隔符 + 商品ID,再设置过期时间,到期自动删除。

后续处理订单之前先去redis查询下,如果key存在就直接返回不给处理,不存在就处理订单。

具体看选择哪种,看自行需要

 

原文链接:https://juejin.cn/post/7273024681631776829

 

注:不是抄袭,只是自己做个笔记,觉得作者写的很好,如有侵权,联系我删除

标签:处理,重复,redis,订单号,订单,提交
From: https://www.cnblogs.com/qwg-/p/17981642

相关文章

  • redis 切面拦截 防重复提交
    /***aop防止并发请求*/@Slf4j@Aspect@ComponentpublicclassLimitRequestAspect{@AutowiredRedisHelperredisHelper;@Around("@annotation(limitRequest)")publicObjectaround(ProceedingJoinPointpoint,LimitRequestlimitRequest)throwsTh......
  • 8、postgres事务问题-分段提交
    postgres事务问题-分段提交在postgres的pck中,存着这自动提交事务时,想让每个dml操作都能分步提交事务。1、pck的总调用不能存在exception的异常捕获注释调总体的异常捕获,再每个dml操作的里面进行异常捕获。CREATEORREPLACEPROCEDUREPROCEDURE_name("p_name"text)AS$BOD......
  • Java如何过滤掉一段字符串中出现重复的字母或数字?
    可以使用Java中的HashSet来去除一段字符串中出现重复的字母或数字。HashSet是一个不允许有重复元素的集合,因此可以利用它的特性来去除重复的字符或数字。示例代码如下:importjava.util.HashSet;publicclassRemoveDuplicates{publicstaticvoidmain(String[]args){......
  • 代码随想录算法训练营第 十 一 天| 20. 有效的括号 1047. 删除字符串中的所有相邻重
    LeetCode 20.有效的括号题目链接:20.有效的括号思路:采用栈数据结构解题;遇到左括号,压右括号入栈 LeetCode 1047.删除字符串中的所有相邻重复项题目链接:1047.删除字符串中的所有相邻重复项注意:Java中队列实现类API的使用 LeetCode 150.逆波兰表达式求值题目链......
  • leedcode 删除有序数组中的重复项
    classSolution:#12234defremoveDuplicates(self,nums):nums_len=len(nums)#5ifnums_len==0:returnnums_lenifnums_len==1:returnnums_lenflag=Truei=0whilef......
  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......
  • C++ opencv计算两个cv::Rect的重复面积
    C++ opencv计算两个cv::Rect的重复面积  #include<opencv2/opencv.hpp>#include<iostream>intmain(){//创建两个矩形cv::Rectrect1(10,10,50,50);//(x,y,width,height)cv::Rectrect2(30,30,50,50);//检查两个矩形是否重叠......
  • 重复spin问题
    ROS2重复spin问题报错描述:在执行回调函数时,报错terminatecalledafterthrowinganinstanceof'std::runtime_error'what():Node'/workflow_control_node'hasalreadybeenaddedtoanexecutor.[ros2run]:Aborted;原因在回调函数中又执行了rclcpp::spin监听函......
  • 如何防止订单二次重复支付?
    1背景用户第一次点击下单操作时,会弹出支付页面待支付。但可能存在用户在支付时发现账户金额不够,后续选择:其他渠道支付(如微信支付转为支付宝支付)或采用不同终端来支付(如由电脑端支付转为app端支付)这时就面临二次支付场景。2方案1由于用户支付的时候的支付页面是html文件或是一个支......
  • walmart 2024年的api 更新 订单和退货API更新–必需!)必须在2024年4月30日前更新订单和
    订单和退货API更新–必需! 2023年6月20日沃尔玛推出了一项新功能,使市场卖家能够接收和管理多数量订单,以帮助节省时间和减少订单管理的模糊性。注意:API用户(卖家和渠道合作伙伴)必须在2024年4月30日前更新订单和退货API。未能在2024年4月30日前更新您的API可能会影响您履行和管理多......