如何防止订单重复

news2024/11/16 13:30:12
如何防止订单重复

在整个下单流程中,哪里重复操作影响最大?确认订单只是修改订单状态从未支付改为待支付而已,不会对我们的主要业务产生影响,而在支付的时候,主要由第三方平台,我们也可以不用管,主要重复操作影响最大的还是在用户下单的这个过程。

若网络堵塞时点击了很多次,那订单服务就会生成多个订单信息,即使只有一个消息有效,其他请求也是对我们系统造成了资源的浪费,对用户体验也很差,有多个订单信息。

一种方式可以通过前端点击下单后,按钮置灰,也就是不可点。但这种只能防止正常用户,用户实际可以绕过前端进行操作,所以后端也必须做相应处理。

可以通过redis的setNX来保证唯一幂等性,setNX的作用是保存Key,Value时,当Value值为空,就可以正常保存返回true,这样就能保证多次操作只能存储一次值,其他操作都会失败。

当然还需要设置过期时间,比如3-5秒,用户一般不会重复提交订单,有也是恶意的,(超过过期时间,就可以再次下单)

关键还是需要怎样的Key去保证这样的幂等性,可以通过用户Token+商品URL+指定key为键,保证当前用户,当前商品,还可以加个指定Key,因为可能这个页面也有其他业务(也就是非下单操作)需要保证幂等性。

(可以通过注解+AOP,处理保证setNX成功才能进行后续操作,否则抛出相应日志)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次Windows状态栏不显示问题

文章目录 🪟解决方案☁️单次处理☁️有效处理 🪟现象🪟尝试的操作⭐END🌟跋🌟交流方式 🪟解决方案 ☁️单次处理 重启explorer.exe 命令行操作 注意,使用命令行操作的时候,出现…

Cocos 3.8.3 实现外描边效果(逃课玩法)

本来想着用Cocos 的Shader Graph照搬Unity的思路来加外描边,发现不行,然后我就想弄两个物体不就行了吗,一个是放大的版本,再放大的版本上加一个材质,这个材质面剔除选择前面的面剔除就行了,果不其然还真行。…

字幕制作软件有哪些?整理了适合新手的5个方法,快速导出srt字幕文件!

字幕制作软件有哪些?平时创作视频作品时,大部分会用到字幕。毕竟字幕是视频中不可或缺的一部分,字幕文件在传达视频内容上达到了重要的作用。 常见的字幕文件有srt、ass和sub格式。市面上比较常用的是srt字幕格式,这种格式几乎适用…

滑动窗口 -- 限制窗口内某元素的数量/种类

目录 长度最小的数组 题解: 将x减到0的最小操作数 题解: 最大连续1的个数 题解: 无重复字符的最长子串(限制数量) 题解: 水果成篮(限制种类) 题解: 找到字符串中…

Skywalking告警配置

背景 skywalking 9.7.0,地址:Backend setup | Apache SkyWalking helm:skywalking-helm:4.5.0,地址:skywalking-helm/chart/skywalking/values.yaml at v4.5.0 首先来说一下为什么使用skywalking告警? …

[半导体检测-6]:为什么晶圆缺陷检测精度越高,所需要的光源的波长越短?

目录 前言: 1. 光束的聚焦能力 1.1 概述 1.2 光束的聚焦能力用什么指标来标识? 1. 光束质量因子(M因子) 2. 衍射极限倍数(β因子) 3. 斯特列尔比(Strehl Ratio) 4. 远场发散…

Spring6梳理13——依赖注入之引入集合Bean属性

以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 13 依赖注入之引入集合Bean属性 13.1 创建Lesson类,student类和teacher实体类…

【LeetCode:2535. 数组元素和与数字和的绝对差 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

jmeter性能测试---csv数据文件设置

(1)什么时候使用CSV数据文件设置? 当不同的用户,或者同一用户多次循环时,都可以获取到不同的值 (2)使用CSV数据文件设置进行参数化的步骤? 实例: 请求:htt…

基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站

单车信息选择骑行 骑行状态留言公告/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 功能如下: 一、开发目标 在共享经济日益盛行的今天,共享单车作为一种绿色、便捷的出行方式,已经深入人们的日常生活。然而,随着共享…

短效IP是网络世界的神秘助力者

伙伴们,我们都知道网络世界神秘莫测,在当今这个高度数字化的时代,网络如同一张无形的大网,将人们的生活和工作紧密相连,成为不可或缺的一部分。而在这庞大的网络背后,有着很多挑战和危险,为了能…

ps快速更换电商图片背景,轻松变成白底图

前言 在电商领域,一张高质量的商品图片往往能吸引更多消费者的目光,提升商品的点击率和转化率。而白底图,以其简洁、清晰、专业的特点,成为电商平台上商品展示的首选。然而,传统的手动抠图方式不仅耗时耗力&#xff0…

Linux中部署Docker环境;Docker常用操作

一,部署Docker环境 官网手册:CentOS | Docker Docs 1.1、查看一下Linux内核版本 uname -r 要求3.10版本及以上。 2.2、卸载老版本docker,避免产生影响 如果服务器安装过docker,没有卸载再次安装会导致安装失败,首…

Latex和Vscode安装和配置

一、Latex安装教程 打开清华大学开源软件镜像站,下载texlive.iso文件 右键点击ios文件,点击装载 配置latex安装 4. 安装过程 二、VScode安装和配置教程 打开Vscode官网,下载安装包 2.右键,以管理员身份运行VSCode安装包&#…

Day.js时间插件的安装引用与常用方法大全

🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

C++ 数据类型分类

在C中,数据类型可以大致分为内置类型(Built-in Types)、标准库类型(Standard Library Types)和自定义类型(User-Defined Types)三大类。 内置类型(Built-in Types) 内置…

Kafka和RabbitMQ比较

Kafka和RabbitMQ都是流行的消息队列系统,它们在分布式系统中扮演着至关重要的角色,用于异步消息传递和解耦应用组件。尽管它们共享一些基本的概念,但它们在设计目标、性能特性、使用场景等方面有着显著的差异。 设计目标 Kafka:Ka…

理解Java引用数据类型(数组、String)传参机制的一个例子

目录 理解Java引用数据类型(数组、String)传参机制的一个例子理解样例代码输出 参考资料 理解Java引用数据类型(数组、String)传参机制的一个例子 理解 引用数据类型传递的是地址。用引用类型A给引用类型B赋值,相当于…

ERROR:start workflow error,dolphinscheduler log重复刷屏(死循环)直至磁盘存满

在使用ds过后发现,我虚拟机中的磁盘内存全部沾满了 查看目录下大于100M的文件: find / -size 100M 查看后发现问题在于ds产生的日志文件特别大而且多, 查看日志后发现日志中一直都在死循环错误:start workflow error 等 其中文件…

【论文_1992】 REINFORCE » P2 附录

Williams, R. J. Simple statistical gradient-following algorithms for connectionist reinforcement learning. Mach. Learn., 8:229–256, 1992. PDF 下载链接 前面部分:【论文_1992】 REINFORCE P1 文章目录 附录 AA.1. REINFORCE 算法的一些结论A.2. 回合式 …