All Projects → yinqiwen → Ardb

yinqiwen / Ardb

Licence: bsd-3-clause
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB.

Programming Languages

lua
6591 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to Ardb

Fastonosql
FastoNoSQL is a crossplatform Redis, Memcached, SSDB, LevelDB, RocksDB, UnQLite, LMDB, ForestDB, Pika, Dynomite, KeyDB GUI management tool.
Stars: ✭ 1,001 (-41.36%)
Mutual labels:  redis, leveldb, rocksdb, lmdb
Bitnami Docker Redis
Bitnami Redis Docker Image
Stars: ✭ 317 (-81.43%)
Mutual labels:  database, redis, nosql, key-value
Nano Sql
Universal database layer for the client, server & mobile devices. It's like Lego for databases.
Stars: ✭ 717 (-58%)
Mutual labels:  database, nosql, persistence, leveldb
Libmdbx
One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.
Stars: ✭ 729 (-57.29%)
Mutual labels:  database, nosql, key-value, lmdb
Tidis
Distributed transactional NoSQL database, Redis protocol compatible using tikv as backend
Stars: ✭ 1,182 (-30.76%)
Mutual labels:  database, redis, nosql, rocksdb
Unqlite
An Embedded NoSQL, Transactional Database Engine
Stars: ✭ 1,583 (-7.26%)
Mutual labels:  database, nosql, key-value
Keyvast
KeyVast - A key value store
Stars: ✭ 33 (-98.07%)
Mutual labels:  database, nosql, key-value
Benchmarks
Benchmark of open source, embedded, memory-mapped, key-value stores available from Java (JMH)
Stars: ✭ 116 (-93.2%)
Mutual labels:  leveldb, rocksdb, lmdb
Nodbi
Document DBI connector for R
Stars: ✭ 56 (-96.72%)
Mutual labels:  database, redis, nosql
Zanredisdb
Yet another distributed kvstore support redis data and index. moved to: https://github.com/youzan/ZanRedisDB
Stars: ✭ 64 (-96.25%)
Mutual labels:  redis, key-value, rocksdb
Bojack
🐴 The unreliable key-value store
Stars: ✭ 101 (-94.08%)
Mutual labels:  database, redis, nosql
Xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.
Stars: ✭ 864 (-49.38%)
Mutual labels:  database, nosql, key-value
Redix
a persistent real-time key-value store, with the same redis protocol with powerful features
Stars: ✭ 907 (-46.87%)
Mutual labels:  database, redis, nosql
Gkvdb
[mirror] Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。
Stars: ✭ 109 (-93.61%)
Mutual labels:  database, nosql, key-value
Redis Marshal
Lightweight Redis data exploration tool
Stars: ✭ 16 (-99.06%)
Mutual labels:  database, redis, nosql
Tupl
The Unnamed Persistence Library
Stars: ✭ 83 (-95.14%)
Mutual labels:  database, nosql, persistence
Ejdb
🏂 EJDB 2.0 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image.
Stars: ✭ 1,187 (-30.46%)
Mutual labels:  database, nosql, key-value
Cog
A Persistent Embedded Graph Database for Python
Stars: ✭ 90 (-94.73%)
Mutual labels:  database, nosql, key-value
Lmdbjava
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
Stars: ✭ 546 (-68.01%)
Mutual labels:  database, key-value, lmdb
Db Tutorial
💾 db-tutorial 是一个数据库教程。
Stars: ✭ 128 (-92.5%)
Mutual labels:  database, redis, nosql

Ardb: A High Performance Persistent NoSql, Full Redis-Protocol Compatibility

Join the chat at https://gitter.im/yinqiwen/ardb Build Status
Ardb is a BSD licensed, redis-protocol compatible persistent nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, WiredTiger, PerconaFT,Couchbase's ForestDB the default backend is Facebook's RocksDB.

Compile

Rocksdb is the default storage engine, to compile with rocksdb, just type make to compile server & lib & tests.

To use LMDB or LevelDB or WiredTiger as storage engine, you should set env storage_engine first.

storage_engine=rocksdb make
storage_engine=leveldb make
storage_engine=lmdb make
storage_engine=wiredtiger make
storage_engine=perconaft make
storage_engine=forestdb make

It should compile to several executables in src directory, such as ardb-server, ardb-test etc.

Features

  • Full redis-protocol compatibility
  • Most redis commands supported, and a few new commands.
  • Multi storage engines supported
  • Multi data structure types supported
    • String
    • List
    • Set
    • Sorted Set
    • Hash
    • Bitmap(String)
    • HyperLogLog(String)
    • 2D Spatial Index(Sorted Set)
    • Stream
  • Replication compatible with Redis 2.6/2.8
    • Ardb instance work as slave of Redis 2.6/2.8+ instance
    • Ardb instance work as master of Redis 2.6/2.8+ instance
    • Ardb instance work as slave of Ardb instance
  • Auto failover support by redis-sentinel
  • Lua Scripting support
  • Pub/Sub
    • All redis pubsub commands supported
  • Transactions
    • All redis transaction commands supported
  • Backup data online
    • Use 'save/bgsave' to backup data
    • Use 'import' to import backup data

Clients

Since ardb is a full redis-protocol compatible server, you can use most existed redis client to connect it without any problem. Here lists all redis clients. http://www.redis.io/clients

  • Known Issues:

    • For Node.js, the recommand client node_redis would try to parse redis_version:x.y.z from info command's output, Ardb users should configure redis-compatible-version in ardb.conf to makesure that redis_version:x.y.z exists in info command's output. There is an online redis GUI admin service redsmin build on node_redis, users can test ardb's redis protocol conformance by a visual way.

Benchmark

Benchmarks were all performed on a four-core Intel(R) Xeon(R) CPU [email protected], with 64 GB of DDR3 RAM, 500 GB of SCSI disk

The benchmark tool is 'redis-benchmark' from redis,50 parallel clients, 10000000 requests, 1000000 random keys each test case.

GCC Version:4.8.3
OS Version: Red Hat Enterprise Linux AS release 4 (Nahant Update 3)
Kernel Version: 2.6.32_1-10-6-0
Redis Version: 2.8.9
Ardb Version: 0.9.1(RocksDB4.3.1), 1 thread(thread-pool-size configured 1) & 16 threads(thread-pool-size configured 16) RocksDB Options:

 write_buffer_size=128M;max_write_buffer_number=16;compression=kSnappyCompression;
 block_based_table_factory={block_cache=512M;block_size=4;filter_policy=bloomfilter:10:true};
 create_if_missing=true;max_open_files=-1;rate_limiter_bytes_per_sec=50M   

Benchmark Img

Becnhmark data(./redis-benchmark -r 10000000 -n 10000000):
                                Ardb(1thread)   Ardb(16threads)    Redis
PING_INLINE                     66313.01        79394.7            67294.75
PING_BULK                       66844.91        79384.61           65703.02
SET                             36238.45        67963.41           64574.45
GET                             46979.24        74050.48           65112.64
INCR                            35522.72        68102.27           65274.15
LPUSH                           24789.29        35788.93           66093.85
LPOP                            15812.53        15657              65832.78
SADD                            13130.08        12998.49           65573.77
SPOP                            200             200                63291.14
LPUSH(for LRANGE)               27693.16        38611.53           65487.89
LRANGE_100 (first 100 elements) 7857.93         33828.36           30797.66
LRANGE_300 (first 300 elements) 3176.16         16369.29           15710.92
LRANGE_500 (first 450 elements) 2156.1          11706.17           11504.83
LRANGE_600 (first 600 elements) 1647.88         9192.53            9094.22
MSET (10 keys)                  10217.64        13552.71           37678.97
Note
  • Ardb uses 1 thread & 16 threads in this benchmark test, while redis is actually single threaded application. Ardb is a multithreaded applcation, you can start the server with more threads by setting 'thread-pool-size' to 16 or higher to increase the read/write performance.
  • There is no any performance improve for SADD/LPUSH/LPOP with 16 threads , because in the test SADD/LPUSH/LPOP always operate on same key, while SADD/LPUSH/LPOP would lock the key until write operation done.
  • SPOP have very poor performance in ardb.

Misc

Community

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].