Skip to content

❄️ 【一款雪花算法发号器】🆔 generator based on snowflake.

License

Notifications You must be signed in to change notification settings

orca-zhang/idgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

idgen

一款基于❄️算法实现的🆔生成器

特性

  • 🚀 支持基于redis或者本地生成(redis操作失败降级为随机数)
  • ⌚ ntp同步和时钟回跳安全(默认最多expiration时间内,目前为一分钟)
  • 🦖 js对接时整型精度不丢失,2090-09-27 13:14:06(3810172446)前不会超过53位
  • 🏳️‍🌈 42位时间戳+4位实例号(可多个节点复用,最多可独立部署16个发号器)+18位序号(一秒内单实例分配不超过13万个)

如何使用

引入包(预计5秒)

import (
    "github.com/orca-zhang/idgen"
)

定义实例(预计5秒)

可以放置在任意位置(全局也可以),建议就近定义

var ig = idgen.NewIDGen(redisCli, 0) // 参数1是redis连接,传nil说明是本地生成,参数2是实例号(会取模16)

获取🆔(预计5秒)

id, err := ig.New() // 返回生成的id,以及是否出错
                    //(只有在redis出错的情况下才会返回err,sn部分用的是随机数,最高位是1)
                    // 有错误时可忽略,id依然可用,此时是降级

解析🆔(预计5秒)

ts, inst, sn := idgen.Parse(id) // 返回`秒级时间戳`,`实例号`,`序列号`

下载包(预计5秒)

非go modules模式:
sh> go get -u github.com/orca-zhang/idgen

go modules模式:
sh> go mod tidy && go mod download

运行吧

🎉 完美搞定 sh> go run <你的main.go文件>

About

❄️ 【一款雪花算法发号器】🆔 generator based on snowflake.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages