page contents

生成唯一且有序的18位订单号或流水号

Pack 发布于 2020-02-22 18:59
阅读 870
收藏 0
分类:数据库

采用什么方式生成唯一且有序的18位订单号或流水号比较好?
重点是有序

423
Pack
Pack

两种思路:
1、mysql自增:
a.如果你这个表只是需要在一个表中存在的,那么直接使用mysql的自增就可以了,mysql已经帮我们完成了事务性的处理,自己设置一个初始的18位的数字(比如100000000000000000),然后设置自增,这样后面订单就会自动自增了;
b.如果你这个订单号或者流水号是需要在多个业务表中使用的,那么可以采用单独的一张表来实现。建立一张专门的订单表,主键设置为自增,程序每次往该表插入一条记录拿到这个有序的订单号或者流水号,这样就保证了有序唯一。(至于是否需要每天定时去清理前面生成的订单号,可以根据自己的实际业务来处理)

2、redis:
每次获取redis里面的最新的订单号或者流水号,然后对该值+1。你可能会考虑redis挂了的问题,这种情况如果redis挂了的话,可以考虑从表中进行读取,然后再放入到redis中,具体方法很多。

请先 登录 后评论