生成唯一订单号是在设计系统时候经常会遇到的一个问题,生成唯一订单号的方法有很多,为了适应不同的场景和性能,选择的方法也会不一样,有些复杂的系统会有多套这种唯一编码生成方式,我来为大家科普一下关于订单号生成规则?下面希望有你要的答案,我们一起来看看吧!

订单号生成规则(怎么生成唯一的订单号)

订单号生成规则

背景

生成唯一订单号是在设计系统时候经常会遇到的一个问题,生成唯一订单号的方法有很多,为了适应不同的场景和性能,选择的方法也会不一样,有些复杂的系统会有多套这种唯一编码生成方式。

利用数据库自增序列

利用数据库自增序列,比如新建一张表,专门插入数据,获取新增记录的主键值,为了订单号的可读性,可以由年月日 时间戳 auto_increment值,这种方式能保证唯一性、递增性,实现也较为简单,缺点就是每次都要连接数据库,插入一条数据来获取自增主键,性能较差,且后续有数据合并场景,订单号可能会重复。

redis代替数据库生成ID

利用Redis的原子操作 INCR和INCRBY来实现,这个自增值也是唯一的,性能要优于数据库。

UUID

可以利用数据库,也可以利用代码生成,全球唯一,性能较高,生成的一坨字符串,可读性较差,字符串一般32位,也有48位的,存储空间较大,作为主键索引查询较慢,但后续如果有合并数据需求,很方便,因为每次生成的都是全球唯一的。

雪花算法

由twitter提出,代码生成,性能较高,此算法弥补了UUID的不足,它是单调递增的,可包含一定的业务意义,有序的ID能够提高数据库写入性能。

业务常见的唯一编码有这些,没有最好的,根据业务场景选择适用的就行。

,