Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ledisdb/ledisdb
A high performance NoSQL Database Server powered by Go
https://github.com/ledisdb/ledisdb
golang goleveldb ledisdb redis rocksdb-support support-cluster
Last synced: 3 days ago
JSON representation
A high performance NoSQL Database Server powered by Go
- Host: GitHub
- URL: https://github.com/ledisdb/ledisdb
- Owner: ledisdb
- License: mit
- Created: 2014-04-30T00:43:09.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-10-22T02:24:37.000Z (about 1 year ago)
- Last Synced: 2024-10-29T14:55:49.413Z (2 months ago)
- Topics: golang, goleveldb, ledisdb, redis, rocksdb-support, support-cluster
- Language: Go
- Homepage: https://ledisdb.io
- Size: 4.04 MB
- Stars: 4,097
- Watchers: 183
- Forks: 434
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - ledisdb/ledisdb - A high performance NoSQL Database Server powered by Go (Go)
- awesome-list - ledisdb
- awesome-go-extra - ledisdb - 04-30T00:43:09Z|2022-01-26T13:15:24Z| (Generators / Databases Implemented in Go)
README
# LedisDB
[![Build Status](https://travis-ci.org/ledisdb/ledisdb.svg?branch=develop)](https://travis-ci.org/ledisdb/ledisdb) [![codecov](https://codecov.io/gh/ledisdb/ledisdb/branch/master/graph/badge.svg)](https://codecov.io/gh/ledisdb/ledisdb) [![goreportcard](https://goreportcard.com/badge/github.com/ledisdb/ledisdb)](https://goreportcard.com/report/github.com/ledisdb/ledisdb)
Ledisdb is a high-performance NoSQL database library and server written in [Go](http://golang.org). It's similar to Redis but store data in disk. It supports many data structures including kv, list, hash, zset, set.
LedisDB now supports multiple different databases as backends.
## Features
+ Rich data structure: KV, List, Hash, ZSet, Set.
+ Data storage is not limited by RAM.
+ Various backends supported: LevelDB, goleveldb, RocksDB, RAM.
+ Supports Lua scripting.
+ Supports expiration and TTL.
+ Can be managed via redis-cli.
+ Easy to embed in your own Go application.
+ HTTP API support, JSON/BSON/msgpack output.
+ Replication to guarantee data safety.
+ Supplies tools to load, dump, and repair database.
+ Supports cluster, use [xcodis](https://github.com/ledisdb/xcodis).
+ Authentication (though, not via http).
+ Repair integrated: You can use `ledis repair` to repair broken databases and `ledis repair-ttl` to repair a very serious bug for key expiration and TTL if you upgraded from v0.4.## Build from source
Create a workspace and checkout ledisdb source
```shell
git clone [email protected]:ledisdb/ledisdb.git
cd ledisdb#set build and run environment
source dev.shmake
make test
```Then you will find all the binary build on `./bin` directory.
## LevelDB support
+ Install leveldb and snappy.
LedisDB supplies a simple script to install leveldb and snappy:
sudo sh tools/build_leveldb.sh
It will install leveldb at /usr/local/leveldb and snappy at /usr/local/snappy by default.
LedisDB uses the modified LevelDB for better performance. [Details.](https://github.com/ledisdb/ledisdb/wiki/leveldb-source-modification)
You can easily use other LevelDB versions (like Hyper LevelDB or Basho LevelDB) instead, as long as the header files are in `include/leveldb`, not `include/hyperleveldb` or any other location.
+ Set `LEVELDB_DIR` and `SNAPPY_DIR` to the actual install path in dev.sh.
+ `make clean && make`## RocksDB support
+ [Install rocksdb(5.1+)](https://github.com/facebook/rocksdb/blob/master/INSTALL.md)(`make shared_lib`) and snappy first.
LedisDB has not yet supplied a simple script to install.
+ Set `ROCKSDB_DIR` and `SNAPPY_DIR` to the actual install path in `dev.sh`.
+ `make clean && make`If the RocksDB API changes, LedisDB may not build successfully. LedisDB currently supports RocksDB version 5.1 or later.
## Choose store database
LedisDB now supports goleveldb, leveldb, rocksdb, and RAM. It will use goleveldb by default.
Choosing a store database to use is very simple.
+ Set in server config file
db_name = "leveldb"
+ Set in command flag
ledis -config=/etc/ledis.conf -db_name=leveldb
Flag command set will overwrite config setting.
## Lua support
Lua is supported using [gopher-lua](https://github.com/yuin/gopher-lua), a Lua VM, completely written in Go.
## Configuration
LedisDB uses [toml](https://github.com/toml-lang/toml) as the configuration format. The basic configuration ```./etc/ledis.conf``` in LedisDB source may help you.
If you don't use a configuration, LedisDB will use the default for you.
## Server Example
```shell
//set run environment if not
source dev.sh./bin/ledis -config=/etc/ledis.conf
//another shell
./bin/ledis cli -p 6380ledis 127.0.0.1:6380> set a 1
OK
ledis 127.0.0.1:6380> get a
"1"//use curl
curl http://127.0.0.1:11181/SET/hello/world
→ {"SET":[true,"OK"]}curl http://127.0.0.1:11181/0/GET/hello?type=json
→ {"GET":"world"}
```## Package Example
```go
import (
lediscfg "github.com/ledisdb/ledisdb/config"
"github.com/ledisdb/ledisdb/ledis"
)# Use Ledis's default config
cfg := lediscfg.NewConfigDefault()
l, _ := ledis.Open(cfg)
db, _ := l.Select(0)db.Set(key, value)
db.Get(key)
```## Replication Example
Set slaveof in config or dynamiclly
```shell
ledis cli -p 6381ledis 127.0.0.1:6381> slaveof 127.0.0.1 6380
OK
```## Cluster support
LedisDB uses a proxy named [xcodis](https://github.com/ledisdb/xcodis) to support cluster.
## CONTRIBUTING
See [CONTRIBUTING.md] .
## Benchmark
See [benchmark](https://github.com/ledisdb/ledisdb/wiki/Benchmark) for more.
## Todo
See [Issues todo](https://github.com/ledisdb/ledisdb/issues?labels=todo&page=1&state=open)
## Client
See [Clients](https://github.com/ledisdb/ledisdb/wiki/Clients) to find or contribute LedisDB client.
## Links
+ [Official Website](https://ledisdb.io)
+ [GoDoc](https://godoc.org/github.com/ledisdb/ledisdb)
+ [Server Commands](https://github.com/ledisdb/ledisdb/wiki/Commands)## Caveat
+ Changing the backend database at runtime is very dangerous. Data validation is not guaranteed if this is done.
## Requirement
+ Go version >= 1.11
## Related Repos
+ [pika](https://github.com/Qihoo360/pika)
## Donate
If you like the project and want to buy me a cola, you can through:
|PayPal|微信|
|------|---|
|[![](https://www.paypalobjects.com/webstatic/paypalme/images/pp_logo_small.png)](https://paypal.me/siddontang)|[![](https://github.com/siddontang/blog/blob/master/donate/weixin.png)|## Feedback
+ Gmail: [email protected]