訂單號自增長部分實現 工作筆記

2021-09-19 05:18:22 字數 1139 閱讀 2171

很多場景需要用到訂單號,訂單號可能會有很多元素組成,比如:特定字元+時間+自增長。其中大多情況下必不可少的是自增長部分。現提供利用redis來實現自增長的幾種方式:

每天重置的自增長

/**

* 獲取訂單號自增長部分,每天重置

* @param key 主鍵

* @param model 格式模板,例如五位數: 00000

* @param maxnum 最大值

* @author lixiang

* @date 2023年04月18日 - 11:30

* @history 2023年04月18日 - 11:30 lixiang create.

*/public

static string getordernumber

(string key, string model,

int maxnum)

redisutil.

expire

(key, expiretime)

; numberformat nf =

newdecimalformat

(model)

;return nf.

format

(num)

;}

注意:到達最大值後需要怎麼處理需自行修改,上面這段**是適用於到達最大值後進行告警,因此我返回了null。

到達最大值後重置

/**

* 獲取訂單號自增長部分,到達最大值後重置

* @param key 主鍵

* @author lixiang

* @date 2023年04月18日 - 11:35

* @history 2023年04月18日 - 11:35 lixiang create.

*/public

static string getordernumber

(string key, string model,

int maxnum)

return nf.

format

(num)

;}

後續有想到其他的再補充吧!

mysql 建立自增長訂單號

因為最近做專案需要,需要使用到,自定義的不重複的自增長的訂單號,在網上找了資料然後又加入了自己的修改,做成的mysql生成訂單號的儲存過程。drop procedure pp create procedure proc get no tname varchar 50 cname varchar 50...

訂單號生成

之前用uuid 因為太長改用16位因此在網上找到一下這種做法,年月日擷取 時間戳 在加隨機數 生成乙個訂單 獲取年份 var date j f c d e b h i a date gettime tostring var ordersn date new date getfullyear 2015...

mysql 訂單號主鍵 為什麼不用訂單號當做主鍵?

1.普通索引上儲存的值是主鍵的值,如果主鍵是乙個很長的字串並且建了很多普通索引,將造成普通索引占有很大的物理空間 2.自增id 在插入的時候可以保證相鄰的兩條記錄可能在同乙個資料塊,而訂單號的連續性在設計上可能沒有自增id好,導致連續插入可能在多個資料塊,增加了磁碟讀寫次數。innodb儲存引擎邏輯...