订单号的生成规则和不同生成策略-总结

订单号的不同生成策略-总结

一. 订单命名的几种规则
  1. 不重复:订单号的唯一行
  2. 安全性:订单编号中不要透露任何和公司有关的信息,不要使用流水号,容易暴露公司的运营情况
  3. 不要使用大规模随机码:随机编码可以满足安全性,但为了满足不重复性要费很大的力气。比如现在已经有了10万条订单,如果再新生成的订单,它的订单号需要与之前的10万条数据的订单号进行比较,结果可想而知。
  4. 防止并发
  5. 控制位数:一般在10~15位最好
二. 淘宝订单号的生成规则
  1. 总共18位
  2. 前14位为序号
  3. 15-16位买家ID的倒数1-2位
  4. 17-18位买家ID的倒数3-4位
三. 订单号设计用户体验规则
  1. 订单号无重复性;
  2. 订单号尽量保持数字型(纯整数),在数据库订单索引查询中,长整数字型的数据索引与检索效率,远远高于文本型,因此尽量避免“字母+数字字符串式”!
三. 订单号的几种生成方式
  1. mysql的自增长(不能使用):以后数量大的时候,需要对mysql进行分库分表,此时订单号会重复
  2. 日期+随机数(不推荐):仍然可能会重复
  3. UUID:长,不利于阅读
  4. GUID由算法自动生成,理论全球唯一的值,但记录不方便
    在这里插入图片描述
  5. 年月日时分秒微秒+随机码(2)+流水号+随机码(3):推荐
  6. redis的incr命令(推荐):可读性好,纯数字,不会太长。
	String res = jedis.get(KEY);
        if (StringUtils.isBlank(res)) {
            jedisClient.set(KEY, INIT_ID);//INIT_ID是自己设置的初始值
        }
        long orderId = jedis.incr(KEY);//存在就生成+1的订单号
  1. Twitter的分布式自增ID算法snowflake

链接:
订单号生成规则

不重复订单号生成的方法

淘宝的订单号规则

  • 5
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值