搜尋

首頁  >  問答  >  主體

mysql - 订单规则id怎么生成?

最近在考虑订单id怎么生成。

全数字但是不要太长,同时orderId需要唯一。

简单的id自增长肯定不行,不仅位数不够,还会暴露业务量。

最近我考虑:

简单的时间戳+随机数+流水号计数器。

不知道大家有什么好的想法。

迷茫迷茫2770 天前454

全部回覆(7)我來回復

  • 迷茫

    迷茫2017-04-17 12:59:33

    主要是看你的業務量了。

    一般是幾種方式:
    1.用戶id+年月日時分秒+隨機數+流水號。隨機數和流水號的位數是依照業務量來設定,不過在秒級的時間內,兩個4就足夠了。如果你的業務量小的話,隨機數和流水號都不用。
    如:0424 201505291832 0001 2455

    2.用戶id + md5(用戶id+時間戳記)。不過使用md5()進行訊息摘要可能會重複,雖然36^32看起來很大,但無法保證摘要後的資料不會重複。或可在md5()的基礎上再進行改造。
    如:0424 + md5(0424 201505291832),(中間沒有空格)產生的摘要是:0424e13c2fe2f569da04b2aa411980dbfa28

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 12:59:33

    通常都是時間戳 + 隨機數的,一天的量也不會太大

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:59:33

    我們的訂單系統就是用「年月日時分秒」+4位隨機數。這樣,理論上支援1秒鐘允許最多創建999個訂單。當然,訂單號碼生成之後,還需要偵測是否重複。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:59:33

    簡單的時間戳+隨機數+流水號計數器+分類id

    分類id指的是,需要在資料庫在寫個映射表

    1-》某種訂單
    2-》另一種訂單
    3-》又是一種訂單

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 12:59:33

    UUID怎麼樣?

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 12:59:33

    可以用發號器?

    回覆
    0
  • 阿神

    阿神2017-04-17 12:59:33

    用戶id+簡單的時間戳(精確到小時)+(4位數的)流水號計數器比如現在是2016年06月10日6時然後加上4位數的流水號計數(身份證上就4位,應該夠了,隨機數什麼的個人覺得用處不大),寫成0424-2016-06-10-06-0001。

    回覆
    0
  • 取消回覆