Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

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

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 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 E5520@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) 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

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.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages