首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

订单场景-基于Redisson实现订单号生成

这篇文章我将举一个实际的订单号生成需求,来和大家一起探究基于Redisson实现订单号生成。 业务场景 如何避免重复下单?...当生成订单号的逻辑和订单创建、落库逻辑分开,每次点击提交订单时,前端调用单独的生成订单号接口,再拿着生成订单号去请求订单创建、落库的逻辑,每次生成订单号都不一致,这样便保证了每次的请求都不是重复的,...图片来源: 图片来源 不重复订单号生成 不重复订单号生成实现方式有: UUID 雪花算法 时间戳+随机数+序列号 时间戳+随机数+序列号相比于UUID、雪花算法的优势主要包括以下几点: 可读性:时间戳+...随机数+序列号生成订单号通常比较短,且包含了时间信息,可以方便地进行人工识别和查询。...可控性:时间戳+随机数+序列号生成订单号中包含了序列号,可以方便地控制其长度和生成规则,以满足不同业务场景下的需求。

23310

PHP生成不重复的订单号

使用场景:商城、微信支付等生成订单号需求 方法一 比较常见的一种简单方法 使用date()函数,获取当前日期的数字,再配合rand()函数,生成几位随机数。便是一个简单的12位订单号了 <?...$rand; } echo getOrderNum(); uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。...当时前面的7位是不会经常变动的(应该是秒数,一秒一次) 所以我们使用substr()函数,截取字符串,从第8位到13位,接着这里会有一个问题,得到的是数字+字母的随机数,如果你需要的订单号可以包含字母,...这里为了纯数字的订单号,所以要继续进行处理。 使用str_split($string, 1)函数,将字符串,以一个字符的长度分割成变量。也就是一个字符一个变量。...而且是基于时间微秒来生成的,重复的可能性非常非常低,之所以加上时间日期,是为了看起来更加统一。

2.7K11

订单号

常见ID生成方式 首先看下常用的ID生成方式. 1.1 UUID UUID是由当前日期和时间, 时钟序列和全局唯一的IEEE机器识别码三部分, 共32个16进制字符组成的字符串. 1.2 雪花算法 Snowflake...订单的生成需要有一定的业务相关性, 容易通过风控发现问题订单. ④长度. 订单号的长度要尽量在10-20之间, 提高可读性. ⑤使用数字. 方便数据读写, 同时也要考虑分库分表规则. ⑥加密验证....针对自己的订单信息, 需要有加密位. 2.2 业务相关 我们再分析下, 一个订单与哪些业务相关, 又如何应用到订单号之中. ①时间. 具体订单生成日期或时间戳. ②卖家ID....使用手机号中的某几位, 根据一定规则, 选取几位放入到订单号中. ⑤平台. 记录订单生成平台. 包括小程序, Android, IOS, PC, 三方平台等等. ⑥业务类型....根据时间等信息按一定规则生成随机数, 降低订单重复率. ⑧自增序列. 单位时间内的自增序列. ⑨验证位. 类似身份证信息的验证位, 根据其他各项信息, 生成一位校验位, 提高订单号的安全性.

1.1K20

简单聊聊电商系统的订单号生成规则

而在某些场景涉及到的线下收款,也会根据订单号来进行订单的确认和收款,不过日常在业务过程中将一般都将订单号生成二维码,再由工作人员扫码进行操作,因此用户在线下对于订单号的感知并不是很强烈。 3....内部进行订单的处理或者跟进 从技术的层面去讲,很多时候搜索订单相关信息的时候都是以订单ID作为唯一标识符,这是由于订单号生成规则的唯一性决定的(后面讲订单号生成规则会讲到)。...不得重复 由于我们在业务中对于订单编号的要求是唯一的,所以订单编号生成的时候一定要遵循不可重复这一特性,而实际在底层生成订单编号的时候由于业务流水很大,处于一个高并发的状态,并且订单号生成规则一般是固定的...,所以可能会造成在同一时间多个线程读取的生成参数相同,从而造成生成订单号相同(当然这是开发人员应该注意的问题)。...其次就是业务的长时间积累可能导致新生成订单号会与过去很久的订单号产生重复,所以在设计订单号的时候一定要充分考虑到不可重复性的原则(后面讲到订单号设计中的变量部分会详细讲到)。 2.

1.6K30

简单介绍订单号或者流水号的生成方法

一般订单号或者流水号等可能在一些平台会用到,然后我就简单的介绍一个我自己生成订单号和流水号的一个方法吧,如果程序有问题或者你有更好的生成办法,欢迎留言,留下你的文章链接,我们一起学习和进步哈。...方法简介: 一般订单号或者流水号的生成,是时间戳+随机数(或者自己写的算法生成),或者是时间戳+订单类型+随机数 比如在A平台付款的,订单类型就是0001,B平台付款的就是0002,总之可以自己想怎么定义就怎么定义...如果是这样的话,大家可以再在将时间精确到毫秒,如下代码,毫秒+随机数 还是有重复的话,可以再在将随机数扩大到8位10位这样,如果这样在毫秒级别还能重复,那你的并发量是有多大,这么大的企业,自己可以写一个生成订单号的算法了吧...r = new Random(); return r.nextInt(900000)+100000;//(int)(Math.random()*999999) } ---- 生成订单号如图所示...生成订单号的demo代码可以下载:(只有一个java文件) https://download.csdn.net/download/qq_27471405/10696399 参考文章: https://blog.csdn.net

5.4K10

项目笔记之订单号生成规则以及方法,第一篇!

小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢小编就带领大家去解读一下生成订单号的问题!   ...首先,订单号我们要明确它有有3个性质:1.唯一性  2.不可推测性3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复。况且满足这些条件的同时订单号还要足够的短。...,订单号的位置相信大家都知道,所以呢,我们在写这些小程序的时候,不妨花上几分钟去思考一下为什么这样去定义!...好了,下面就告诉大家生成订单的办法了!   ...首先,我们生成订单的方式呢:可以采用时间戳加随机数的方式比如:time().rand(10000,99999);这样呢就生成了一个15位的随机数,时间戳呢精确到了毫秒,而后五位随机数,也去除了高并发状况下

1.1K80
领券