Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

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.

License

NotificationsYou must be signed in to change notification settings

yinqiwen/ardb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Compile

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

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

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

It should compile to several executables insrc 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 clientnode_redis would try to parseredis_version:x.y.z frominfo command's output, Ardb users should configureredis-compatible-version in ardb.conf to makesure thatredis_version:x.y.z exists ininfo command's output. There is an online redis GUI admin serviceredsmin build onnode_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) CPUE5520@2.27GHz, 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)    RedisPING_INLINE                     66313.01        79394.7            67294.75PING_BULK                       66844.91        79384.61           65703.02SET                             36238.45        67963.41           64574.45GET                             46979.24        74050.48           65112.64INCR                            35522.72        68102.27           65274.15LPUSH                           24789.29        35788.93           66093.85LPOP                            15812.53        15657              65832.78SADD                            13130.08        12998.49           65573.77SPOP                            200             200                63291.14LPUSH(for LRANGE)               27693.16        38611.53           65487.89LRANGE_100 (first 100 elements) 7857.93         33828.36           30797.66LRANGE_300 (first 300 elements) 3176.16         16369.29           15710.92LRANGE_500 (first 450 elements) 2156.1          11706.17           11504.83LRANGE_600 (first 600 elements) 1647.88         9192.53            9094.22MSET (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

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp