A high performance NoSQL Database Server powered by Go
Go to file
siddontang f95494386a update config 2014-07-23 08:30:00 +08:00
client add missing test for bitmap 2014-07-21 09:52:53 +08:00
cmd update config 2014-07-23 08:30:00 +08:00
doc Update command documents, 2014-07-16 16:57:44 +08:00
etc change configuration 2014-07-23 07:55:40 +08:00
ledis update config 2014-07-23 08:30:00 +08:00
leveldb use iterator to read many consistently in api 2014-07-10 11:32:37 +08:00
server update config 2014-07-23 08:30:00 +08:00
.gitignore Update command documents, 2014-07-16 16:57:44 +08:00
LICENSE Initial commit 2014-04-29 17:43:09 -07:00
Makefile add makefile 2014-07-20 19:03:00 +08:00
README.md update read me 2014-07-21 10:47:25 +08:00
benchmark.md update document 2014-07-02 14:18:28 +08:00
bootstrap.sh change configuration 2014-07-23 07:55:40 +08:00
build_leveldb.sh refactor, support use embedded ledisdb 2014-05-15 14:19:48 +08:00
dev.sh refactor, support use embedded ledisdb 2014-05-15 14:19:48 +08:00

README.md

LedisDB

Ledisdb is a high performance NoSQL like Redis based on LevelDB written by go. It supports some advanced data structure like kv, list, hash and zset, and may be alternative for Redis.

Features

  • Rich advanced data structure: KV, List, Hash, ZSet, Bit.
  • Uses leveldb to store lots of data, over the memory limit.
  • Supports expiration and ttl.
  • Redis clients, like redis-cli, are supported directly.
  • Multi client API supports, including Golang, Python, Lua(Openresty).
  • Easy to embed in Golang application.
  • Replication to guarantee data safe.
  • Supplies tools to load, dump, repair database.

Build and Install

  • Create a workspace and checkout ledisdb source

      mkdir $WORKSPACE
      cd $WORKSPACE
      git clone git@github.com:siddontang/ledisdb.git src/github.com/siddontang/ledisdb
    
      cd src/github.com/siddontang/ledisdb
    
  • Install leveldb and snappy, if you have installed, skip.

    LedisDB supplies a simple shell to install leveldb and snappy:

      sh build_leveldb.sh
    

    It will default install leveldb at /usr/local/leveldb and snappy at /usr/local/snappy.

    LedisDB use the modified LevelDB for better performance, see here.

  • Set LEVELDB_DIR and SNAPPY_DIR to the actual install path in dev.sh.

  • Then:

      . ./bootstap.sh 
      . ./dev.sh
    
      go install ./...
    

Server Example

./ledis-server -config=/etc/ledis.json

//another shell
ledis-cli -p 6380

ledis 127.0.0.1:6380> set a 1
OK
ledis 127.0.0.1:6380> get a
"1"

Package Example

import "github.com/siddontang/ledisdb/ledis"
l, _ := ledis.Open(cfg)
db, _ := l.Select(0)

db.Set(key, value)

db.Get(key)

Replication Example

Set slaveof in config or dynamiclly

ledis-cli -p 6381 

ledis 127.0.0.1:6381> slaveof 127.0.0.1:6380
OK

Benchmark

See benchmark.md for more.

Todo

See Issues todo

Thanks

Gmail: cenqichao@gmail.com

Gmail: chendahui007@gmail.com

Gmail: cppgohan@gmail.com

Gmail: tiaotiaoyly@gmail.com

Gmail: wyk4true@gmail.com

Feedback

Gmail: siddontang@gmail.com