mysql查詢條件賦值,高并發下如何生成唯一訂單號?
互聯網架構
分布式/集群環境ID生成要求全局唯一高并發支持高可用趨勢遞增信息安全可讀性ID 生成策略1、UUID
通用唯一識別碼組成: 當前日期 + 時間 + 時鐘序列 + 機器識別碼(MAC地址或其他)在分布式系統中,所有元素都不需要通過中央控制端來 判斷數據的唯一性2、數據庫自增
關系型數據庫都實現數據庫自增ID;Mysql通過AUTO_INCREMENT實現、Oracle通過Sequence序列實現。在數據集群環境下,不同數據庫節點可設置不同起步值、相同步長來實現集群下生成全局唯一、遞增IDSET GLOBAL auto_increment_increment = 3SET GLOBAL auto_increment_offset = 1;3、Snowflake
41位時間戳+10位機器ID +12位序列號(自增),轉換為長度為18的長整型Twitter為滿足每秒上萬條消息的創建,每條消息都必須分配全局唯一ID,這些ID需要趨勢遞增,方便客戶端排序。4、Redis
Redis 實現自增IDRedis實現了incr(key) API用于將key 的值遞增1,并返回結果,如果key不存在,則創建并賦值為0,然后再執行incr操作。幾種策略總結