Skip to content

dogslee/genid

Repository files navigation

genid

Go Refrence Card Go Passing Card Go Report Card Go Codecov Card Go License Card

一个简单的24位 分布式自增的ID生成器

业务码生成规则如下

业务ID(4位)+时间戳(14位)+自增序列(8位)

如下图: alt

其中inc id 是通过redis 中的原子自增实现的,理论上1s最多可以生成 99999999 个不同的ID

当然这依赖于redis的读写能力,超高并发场景下可将redis做集群化

快速开始

package main

import (
	"context"
	"fmt"

	"github.com/dogslee/genid"
	"github.com/go-redis/redis/v8"
)

func main() {
	cli := redis.NewClient(
		&redis.Options{
			Addr: "127.0.0.1:16379",
		},
	)
	g, err := genid.New(
		genid.DB(15),
		genid.Cli(cli),
	)
	if err != nil {
		panic(err)
	}
	code, _ := g.Create(context.Background(), "1000")
	fmt.Println(code)
}

About

A simple 24-bit distributed self-incrementing ID generator

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages