Giter Site home page Giter Site logo

ledisdb's Introduction

LedisDB

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

LedisDB now supports multi database as backend to store data, you can test and choose the proper one for you.

Features

  • Rich advanced data structure: KV, List, Hash, ZSet, Bit.
  • Stores lots of data, over the memory limit.
  • Various backend database to use: LevelDB, goleveldb, LMDB, RocksDB.
  • 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 [email protected]:siddontang/ledisdb.git src/github.com/siddontang/ledisdb

cd src/github.com/siddontang/ledisdb

#set build and run environment 
source dev.sh

make
make test

LevelDB support

  • Install leveldb and snappy.

    LedisDB supplies a simple script to install leveldb and snappy:

      sh build_tool/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.

  • make

RocksDB support

  • Install rocksdb(shared_lib) and snappy first.

    LedisDB has not supplied a simple script to install, maybe later.

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

  • make

Choose store database

LedisDB now supports goleveldb, lmdb, leveldb, rocksdb, it will choose goleveldb as default to store data if you not set.

Choosing a store database to use is very simple, you have two ways:

  • Set in server config file

      "db" : {
          "name" : "leveldb"
      }
    
  • Set in command flag

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

    Flag command set will overwrite config set.

Caveat

You must known that changing store database runtime is very dangerous, LedisDB will not guarantee the data validation if you do it.

Server Example

//set run environment if not
source dev.sh

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 for more.

Todo

See Issues todo

Links

Thanks

Gmail: [email protected]

Gmail: [email protected]

Gmail: [email protected]

Gmail: [email protected]

Gmail: [email protected]

Feedback

Gmail: [email protected]

ledisdb's People

Contributors

siddontang avatar holys avatar silentsai avatar gohan avatar wenyekui avatar

Watchers

Vicever avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.