Popularity
3.6
Growing
Activity
3.5
Declining
61
1
9

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

indigo alternatives and similar packages

Based on the "Miscellaneous" category

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.