Use 6 byte for submission time (UTC). You can use for SQL.
! Limit values to 2310 year.
-
1-bytehardware address CRC4 ID -
2-byteprocess id -
4-bytevalue representing the seconds since the 2018年01月01日 epoch -
3-bytecounter (random, or manual) -
2-bytenanoseconds (the first 2 bytes of the four byte value)
go get github.com/itrabbit/rid
fmt.Println(rid.New()) // -> t9eti00dzt0e0hkibo9g fmt.Println(rid.New().String()) // -> t9ew400dzt1db4okkw80 fmt.Println(rid.New().NumeralString()) // -> 218093205000013254195242051055202176
Custom source:
src := rid.NewSource() // src.Seed(0) <- Set start counter by custom value id := src.NewID()
Get embedded info:
id := rid.New() id.Mid() // Hardware Address CRC ID id.Pid() // Process Pid id.Time() // With an accuracy of up to 6 bytes (from 8) id.Counter()
Copyright (c) 2018 IT Rabbit.
Original encode/decode algorithm: Copyright (c) 2015 Olivier Poitrey rs@dailymotion.com. The same MIT license applies.