https://github.com/btnguyen2k/olaf
Twitter Snowflake implemented in Go
https://github.com/btnguyen2k/olaf
Last synced: 4 months ago
JSON representation
Twitter Snowflake implemented in Go
- Host: GitHub
- URL: https://github.com/btnguyen2k/olaf
- Owner: btnguyen2k
- License: mit
- Created: 2019-01-03T13:31:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-10T08:59:20.000Z (about 7 years ago)
- Last Synced: 2025-05-11T22:38:54.441Z (about 1 year ago)
- Language: Go
- Size: 29.3 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go-cn - olaf
- awesome-go-cn - olaf
- fucking-awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go-with-stars - olaf - 04-10 | (Utilities / Utility/Miscellaneous)
- go-awesome-with-star-updatetime - olaf - Twitter Snowflake implemented in Go. (Utilities / HTTP Clients)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go - olaf - | - | - | (Utilities / HTTP Clients)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / HTTP Clients)
- awesome-go-plus - olaf - Twitter Snowflake implemented in Go.  (Utilities / Utility/Miscellaneous)
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / HTTP Clients)
- awesome-go-cn - olaf
- awesome-go - olaf - Twitter Snowflake implemented in Go. (Utilities / Utility/Miscellaneous)
- awesome-go-info - olaf
- awesome-go-extra - olaf - 01-03T13:31:10Z|2019-04-10T08:59:20Z| (Utilities / Fail injection)
- awesome-Char - olaf - Twitter Snowflake implemented in Go. (Utilities / HTTP Clients)
README
**Since 10-Apr-2019: Olaf has been merged as a sub-module of [btnguyen2k/consu](https://github.com/btnguyen2k/consu)**
# Olaf
[](https://goreportcard.com/report/github.com/btnguyen2k/olaf)
[](https://cover.run/go?tag=golang-1.10&repo=github.com%2Fbtnguyen2k%2Folaf)
[](https://godoc.org/github.com/btnguyen2k/olaf)
[](https://github.com/avelino/awesome-go)
Golang implementation of Twitter Snowflake.
## Getting Started
### Install Package
```
go get github.com/btnguyen2k/olaf
```
### Usage
```go
package main
import (
"fmt"
"github.com/btnguyen2k/olaf"
)
func main() {
// use default epoch
o := olaf.NewOlaf(1981)
//use custom epoch (note: epoch is in milliseconds)
//o := olaf.NewOlafWithEpoch(103, 1546543604123)
id64 := o.Id64()
id64Hex := o.Id64Hex()
id64Ascii := o.Id64Ascii()
fmt.Println("ID 64-bit (int) : ", id64, " / Timestamp: ", o.ExtractTime64(id64))
fmt.Println("ID 64-bit (hex) : ", id64Hex, " / Timestamp: ", o.ExtractTime64Hex(id64Hex))
fmt.Println("ID 64-bit (ascii) : ", id64Ascii, " / Timestamp: ", o.ExtractTime64Ascii(id64Ascii))
id128 := o.Id128()
id128Hex := o.Id128Hex()
id128Ascii := o.Id128Ascii()
fmt.Println("ID 128-bit (int) : ", id128.String(), " / Timestamp: ", o.ExtractTime128(id128))
fmt.Println("ID 128-bit (hex) : ", id128Hex, " / Timestamp: ", o.ExtractTime128Hex(id128Hex))
fmt.Println("ID 128-bit (ascii): ", id128Ascii, " / Timestamp: ", o.ExtractTime128Ascii(id128Ascii))
}
```
## Document - GoDoc
See [GoDoc](https://godoc.org/github.com/btnguyen2k/olaf).
## History
Current version: `0.1.0`.
### 2019-01-03 - v0.1.0
First release:
- Generate 64-bit and 128-bit IDs:
- Support formats: `integer`, `hex-string` (base 16) and `ascii-string` (base 36).
- Custom epoch (64-bit ID only).
- Extract the time metadata from generated ID.