Popularity
4.1
Stable
Activity
1.4
Growing
108
1
13

Programming language: Go
License: MIT License
Tags: Miscellaneous    
Latest version: v1.0.1

indigo alternatives and similar packages

Based on the "Miscellaneous" category.
Alternatively, view indigo alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of indigo or a related project?

Add another 'Miscellaneous' Package

README

Indigo

GitHub Actions codecov Go Report Card codebeat badge Maintainability GoDoc GitHub license

About

  • A distributed unique ID generator of using Sonyflake and encoded by Base58.
  • Base58 logic is optimized unsigned int64.
  • ID max length is 11 characters by unsigned int64 max value.
  • An Encoder can change your original encoder ;)

Install

$ go get -u github.com/osamingo/indigo

Usage

package main

import (
    "log"
    "sync"
    "time"

    "github.com/osamingo/indigo"
)

var g *indigo.Generator

func init() {
    t := time.Unix(1257894000, 0) // 2009-11-10 23:00:00 UTC
    g = indigo.New(nil, indigo.StartTime(t))
    _, err := g.NextID()
    if err != nil {
        log.Fatalln(err)
    }
}

func main() {

    wg := sync.WaitGroup{}
    wg.Add(100)
    for i := 0; i < 100; i++ {
        go func() {
            defer wg.Done()
            id, err := g.NextID()
            if err != nil {
                log.Fatalln(err)
            } else {
                log.Println("ID:", id)
            }
        }()
    }

    wg.Wait()
}

Benchmark

# Machine: MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
# CPU    : 2.7 GHz Intel Core i7
# Memory : 16 GB 2133 MHz LPDDR3

BenchmarkEncoder_Encode-8       20000000        66.0 ns/op       46 B/op     1 allocs/op
BenchmarkEncoder_Decode-8       50000000        29.8 ns/op        0 B/op     0 allocs/op
PASS
ok      github.com/osamingo/indigo/base58       2.930s
# Machine: MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
# CPU    : 2.7 GHz Intel Core i7
# Memory : 16 GB 2133 MHz LPDDR3

BenchmarkGenerator_NextID-8        50000       39175 ns/op        7 B/op     1 allocs/op
PASS
ok      github.com/osamingo/indigo      8.548s

Bibliography

  • Sonyflake - A distributed unique ID generator inspired by Twitter's Snowflake.
  • Base58 - Base58 is a group of binary-to-text encoding schemes used to represent large integers as alphanumeric text.

License

Released under the MIT License.


*Note that all licence references and agreements mentioned in the indigo README section above are relevant to that project's source code only.