redis-snowflake-id
v1.1.2
Published
Node.js implementation of Twitter Snowflake ID Generator, base on redis.
Downloads
7
Maintainers
Readme
redis-snowflake-id
Node.js 版本的 Twitter 雪花算法(Snowflake) 发号器。基于 redis 存储发号器自增序号
安装
npm install redis-snowflake-id -S
或
yarn add redis-snowflake-id
使用
let options = {
// redis 配置,详见 https://www.npmjs.com/package/redis
redis: {
host: '127.0.0.1',
},
// 世纪,用于减少生成的id数字大小,单位:毫秒,如:1300000000000
epoch: 0,
// redis 的hash键名
hash_key: 'REDIS_SNOWFLAKE_ID',
};
// 创建发号器实例
let idgen = new RedisSnowflakeId(options);
// 生成id
let id = await idgen.next();
console.log('id', id);
// 根据id解析生成的时间戳(毫秒)
let time = await idgen.parse(id);
console.log('time', time);
// 生成不同业务类型的id,可选值:0~255,默认:0
let machineId = 3;
let id2 = await idgen.next(machineId);
console.log('id2', id2);
原理
雪花算法(snowflake)是将时间戳、业务id、自增序列分别转为二进制,然后拼接到一起,再转回10进制,得到唯一id。
本项目根据实际情况将时间戳补全到41位,业务id补全到8位,自增序列补全到14位,如果业务id不够用,可自行调整
0 00000000000000000000000000000000000000000 00000000 00000000000000
0 + 41位时间戳 + 8位业务id + 14位自增序列