订单号设计规则
最近公司由于业务的需要,设计生成订单号规则(定制版)。在网上查看了一些资料,在这里总结一些自己的心得。
- 基本需求:正确性、唯一性、安全性、稳定性
- 高级需求:检索性能、其他性能方面
- 定制化需求:语义相关、业务相关
订单号的生成规则:
- 唯一性(不重复):保证编码id唯一;
- 安全性:在编码中不要加入任何和公司运营的数据;
- 易读性:不大规模使用随机码,造成编码位数过长,不建议有字母编码规则,最好是纯数字编码;
- 可扩展性:便于查询,业务升级等;
- 防止并发:主要针对编码中有时间的设定,分布式机器的时间不统一。
编码规则一般位数控制在10-15位,常见的编码规则:
- 时间戳+业务类型+下单平台+随机码(或自增码,自增码每天可清零)+支付渠道+用户ID(建议);
- 年月日时分秒+用户ID;
- 年月日时分秒微秒+随机码(2)+流水号+随机码(3);
- 利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)
- 日期+自增长数字的订单号(比如:2012040110235662)
- 产生随机的订单号(65865325365966)
- 字母+数字字符串式,字母有包含特别意义,C02356652
- Twitter的雪花算法,php第三方扩展库(php-snowflake):https://github.com/zh-ang/php-snowflake(推荐)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构