A golang queue library based on go-leveldb
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andrew Thornton f6c21fd332 Update with go get -u (#3) 2 months ago
.circleci init project 1 year ago
.drone.yml upgrade drone format 7 months ago
.gitignore Add Set and UniqueQueue implementations (#1) 5 months ago
LICENSE init project 1 year ago
README.md Add Set and UniqueQueue implementations (#1) 5 months ago
error.go Add Set and UniqueQueue implementations (#1) 5 months ago
go.mod Update with go get -u (#3) 2 months ago
go.sum Update with go get -u (#3) 2 months ago
queue.go Attempt autorecovery on db open (#2) 2 months ago
queue_test.go fix bug 7 months ago
set.go Attempt autorecovery on db open (#2) 2 months ago
set_test.go Add Set and UniqueQueue implementations (#1) 5 months ago
uniquequeue.go Attempt autorecovery on db open (#2) 2 months ago
uniquequeue_test.go Add Set and UniqueQueue implementations (#1) 5 months ago

README.md

levelqueue

Level queue is a simple queue golang library base on go-leveldb.

Build Status

Installation

go get gitea.com/lunny/levelqueue

Usage

queue, err := levelqueue.Open("./queue")

err = queue.RPush([]byte("test"))

// pop an element from left of the queue
data, err = queue.LPop()

// if handle success, element will be pop, otherwise it will be keep
queue.LHandle(func(dt []byte) error{
    return nil
})

You can now create a Set from a leveldb:

set, err := levelqueue.OpenSet("./set")

added, err:= set.Add([]byte("member1"))

has, err := set.Has([]byte("member1"))

members, err := set.Members()

removed, err := set.Remove([]byte("member1"))

And you can create a UniqueQueue from a leveldb:

queue, err := levelqueue.OpenUnique("./queue")

err := queue.RPush([]byte("member1"))

err = queue.LPush([]byte("member1"))
// Will return ErrAlreadyInQueue

// and so on.

Creating Queues, UniqueQueues and Sets from already open DB

If you have an already open DB you can create these from this using the NewQueue, NewUniqueQueue and NewSet functions.