A pure Go embed Nosql database with kv, list, hash, zset, bitmap, set.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config init Sep 17, 2014
store follow goleveldb Dec 27, 2014
tools init Sep 17, 2014
.gitignore added iterator May 8, 2016
LICENSE init Sep 17, 2014
README.md Update README.md Jul 5, 2015
README_CN.md Update README_CN.md Jul 5, 2015
batch.go init Sep 17, 2014
binlog.go init Sep 17, 2014
binlog_test.go init Sep 17, 2014
binlog_util.go init Sep 17, 2014
const.go add version Feb 10, 2015
doc.go doc improved Sep 18, 2014
dump.go init Sep 17, 2014
dump_test.go init Sep 17, 2014
info.go init Sep 17, 2014
multi.go init Sep 17, 2014
multi_test.go init Sep 17, 2014
nodb.go init Sep 17, 2014
nodb_db.go init Sep 17, 2014
nodb_test.go init Sep 17, 2014
replication.go init Sep 17, 2014
replication_test.go init Sep 17, 2014
scan.go added iterator May 8, 2016
scan_test.go init Sep 17, 2014
t_bit.go init Sep 17, 2014
t_bit_test.go init Sep 17, 2014
t_hash.go init Sep 17, 2014
t_hash_test.go init Sep 17, 2014
t_kv.go added lock Jun 21, 2016
t_kv_test.go init Sep 17, 2014
t_list.go bug fixed Oct 19, 2014
t_list_test.go init Sep 17, 2014
t_set.go init Sep 17, 2014
t_set_test.go init Sep 17, 2014
t_ttl.go init Sep 17, 2014
t_ttl_test.go tests Dec 27, 2014
t_zset.go init Sep 17, 2014
t_zset_test.go init Sep 17, 2014
tx.go init Sep 17, 2014
tx_test.go init Sep 17, 2014
util.go init Sep 17, 2014

README.md

NoDB

中文

Nodb is a fork of ledisdb and shrink version. It's get rid of all C or other language codes and only keep Go's. It aims to provide a nosql database library rather than a redis like server. So if you want a redis like server, ledisdb is the best choose.

Nodb is a pure Go and high performance NoSQL database library. It supports some data structure like kv, list, hash, zset, bitmap, set.

Nodb now use goleveldb as backend to store data.

Features

  • Rich data structure: KV, List, Hash, ZSet, Bitmap, Set.
  • Stores lots of data, over the memory limit.
  • Supports expiration and ttl.
  • Easy to embed in your own Go application.

Install

go get github.com/lunny/nodb

Package Example

Open And Select database

import(
  "github.com/lunny/nodb"
  "github.com/lunny/nodb/config"
)

cfg := new(config.Config)
cfg.DataDir = "./"
dbs, err := nodb.Open(cfg)
if err != nil {
  fmt.Printf("nodb: error opening db: %v", err)
}

db, _ := dbs.Select(0)

KV

KV is the most basic nodb type like any other key-value database.

err := db.Set(key, value)
value, err := db.Get(key)

List

List is simply lists of values, sorted by insertion order. You can push or pop value on the list head (left) or tail (right).

err := db.LPush(key, value1)
err := db.RPush(key, value2)
value1, err := db.LPop(key)
value2, err := db.RPop(key)

Hash

Hash is a map between fields and values.

n, err := db.HSet(key, field1, value1)
n, err := db.HSet(key, field2, value2)
value1, err := db.HGet(key, field1)
value2, err := db.HGet(key, field2)

ZSet

ZSet is a sorted collections of values. Every member of zset is associated with score, a int64 value which used to sort, from smallest to greatest score. Members are unique, but score may be same.

n, err := db.ZAdd(key, ScorePair{score1, member1}, ScorePair{score2, member2})
ay, err := db.ZRangeByScore(key, minScore, maxScore, 0, -1)

Links

Thanks

Gmail: siddontang@gmail.com