背景
生成唯一订单号是在设计系统时候经常会遇到的一个问题,生成唯一订单号的方法有很多,为了适应不同的场景和性能,选择的方法也会不一样,有些复杂的系统会有多套这种唯一编码生成方式。
利用数据库自增序列
利用数据库自增序列,比如新建一张表,专门插入数据,获取新增记录的主键值,为了订单号的可读性,可以由年月日+时间戳+auto_increment值,这种方式能保证唯一性、递增性,实现也较为简单,缺点就是每次都要连接数据库,插入一条数据来获取自增主键,性能较差,且后续有数据合并场景,订单号可能会重复。
redis代替数据库生成ID
利用Redis的原子操作 INCR和INCRBY来实现,这个自增值也是唯一的,性能要优于数据库。
UUID
可以利用数据库,也可以利用代码生成,全球唯一,性能较高,生成的一坨字符串,可读性较差,字符串一般32位,也有48位的,存储空间较大,作为主键索引查询较慢,但后续如果有合并数据需求,很方便,因为每次生成的都是全球唯一的。
雪花算法
由twitter提出,代码生成,性能较高,此算法弥补了UUID的不足,它是单调递增的,可包含一定的业务意义,有序的ID能够提高数据库写入性能。
业务常见的唯一编码有这些,没有最好的,根据业务场景选择适用的就行。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 313694832@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.zhangfen6.com/12568.html
如若转载,请注明出处:https://www.zhangfen6.com/12568.html