javascript雪花算法ID生成庫simple-flakeid


開源地址:https://github.com/zhupengfeivip/simple-flakeId

核心算法版權屬於 yitter](https://github.com/yitter))
項目更多介紹參照:https://github.com/yitter/idgenerator
本項目是在此庫優化而來,遵循開源原則,完全開源。

install

npm i simple-flakeid

function

function NextId()

根據輸出數值判斷,小於number最大值時輸出number類型,大於時輸出bigint

function NextNumber()

始終輸出number類型,超過時throw error

function NextBigId()

始終輸出bigint類型

js demo

const snowId = require('simple-flakeid')
let gen1 = new snowId.SnowflakeIdv1({ workerId: 1 })
for (let i = 0; i < 10; i++) {
    let id1 = gen1.NextId()
    console.log(`${i} ID:${id1} ${typeof id1} length:${id1.toString().length}`)
}

output:

$ node js/demo1.js 
0 ID:235100305752133 number length:15
1 ID:235100305772613 number length:15
2 ID:235100305776709 number length:15
3 ID:235100305776710 number length:15
4 ID:235100305776711 number length:15
5 ID:235100305776712 number length:15
6 ID:235100305776713 number length:15
7 ID:235100305780805 number length:15
8 ID:235100305780806 number length:15
9 ID:235100305780807 number length:15
const snowId = require('simple-flakeid')
let gen1 = new snowId.SnowflakeIdv1({ workerId: 1 })
for (let i = 0; i < 10; i++) {
    let id1 = gen1.NextBigId()
    console.log(`${i} ID:${id1} ${typeof id1} length:${id1.toString().length}`)
}

output:

$ node js/demo2.js
0 ID:235104756604997 bigint length:15
1 ID:235104756629573 bigint length:15
2 ID:235104756629574 bigint length:15
3 ID:235104756629575 bigint length:15
4 ID:235104756629576 bigint length:15
5 ID:235104756629577 bigint length:15
6 ID:235104756633669 bigint length:15
7 ID:235104756633670 bigint length:15
8 ID:235104756633671 bigint length:15
9 ID:235104756633672 bigint length:15

ts demo

import { SnowflakeIdv1 } from "../index"

let gen1 = new SnowflakeIdv1({ workerId: 1 })
for (let i = 0; i < 10; i++) {
    let id1 = gen1.NextId()
    console.log(`${i} ID:${id1} ${typeof id1} length:${id1.toString().length}`)
}

output:

$ ts-node ts/demo1.ts 
0 ID:235099434217541 number length:15
1 ID:235099434225733 number length:15
2 ID:235099434225734 number length:15
3 ID:235099434225735 number length:15
4 ID:235099434225736 number length:15
5 ID:235099434229829 number length:15
6 ID:235099434229830 number length:15
7 ID:235099434229831 number length:15
8 ID:235099434229832 number length:15
9 ID:235099434233925 number length:15

更多示例代碼:https://github.com/zhupengfeivip/simple-flakeId-demo.git
包含在API中如何處理bigint的長度問題,請看示例代碼

其他幫助

在mysql中int類型最大長度是10位數字,由於本算法默認生成的是15位,最短也是11位,所以在mysql中需要使用bigint數據類型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM