从0开始的申请编号

  今天在做申请订单编号时,需求是:按照年月日然后加上一串数字编号,组成一个新的申请编号。

  前面的年月日好处理,直接使用date函数就行,而后面需要加一串从0开始的数字编号,我想了几种方案。

  1、第一种是直接取数据库的主键id进行。但是这样有缺点,一个是本次需求是每天都需要更新一下编号,重置从0开始,因此每次都要对表进行清空,不友好。其次是多建一张表大材小用了,没有这个必要。

  2、使用redis缓存,key值为当天的日期加上标记符,比如bianhao20200309,然后值是最新的申请编号,如果缓存中有,则取出,然后+1,如果没有则生成。这样是比较方便的。

  sprintf,可以补填0,比如sprintf('$03s'),如果不足三位会自动补0.

  ps,使用这种方法需要注意并发问题,如果有两个订单同时申请,可能会导致编号重复的现象,如果需要不重复,需要用redis锁

猜你喜欢

转载自www.cnblogs.com/xingyuecanxue/p/12450888.html
今日推荐