tips:Ctrl + F快速定位所需內容閱讀吧。
1、全局唯壹ID特點
2、全局唯壹ID生成策略
1、snowflake算法全局唯壹ID策略
此處我們參考 snowflake算法的ID策略 ,其具體策略如下:
① 1位,固定位;
② 41位,用來記錄時間戳(毫秒),接近69年;
③ 10位,用來記錄工作機器id;
④ 12位,序列號,用來記錄同毫秒內產生的不同id;
2、Redis自增全局唯壹ID策略
自定義我們自己的 Redis自增的ID策略 ,具體如下:
① 1位,固定位;
② 31位,用來記錄時間戳(秒),接近69年;
③ 32位,序列號,用來記錄同壹秒內產生的不同id;
1、獲取開始時間戳
LocalDateTime#of(int year, int month, int dayOfMonth, int hour, int minute, int second) 方法,傳入自己需要的起始年月日時分秒;
如:2022年1月1日 00點00分00秒,為 1640995200L 。
2、編寫ID生成工具類
@Component註解 ,將工具類註冊到Spring容器當中,方便使用;
BEGIN_TIMESTAMP 自定義起始的時間戳;
COUNT_BITS 位移量,後續拼接全局唯壹ID時使用;
timestamp 獲取當前設置起始時間戳的偏移量;
拼接key ,例如:incr:order:20220325;
位運算拼接全局ID, timestamp << COUNT_BITS | count; ;
3、測試生成全局唯壹ID
註入RedisIdWorker對象,用於測試;
編寫測試方法:
① 使用 線程池 模擬並發調用,此處簡單處理;
② 使用 CountDownLatch 控制線程執行;
完整的測試方法如下:
以上即為Redis全局唯壹ID的基礎內容,感謝閱讀。