How does it compare to Kvrocks, which use RocksDB as the storage backend too?
I will release some design documents later on (hopefully this month). Remember that is a one man project (hopefully, not for long), so it takes time to organize everything :)
Each incoming connection is assigned to a worker thread, and two tokio tasks are created for the connection (one for reading and another for writing).
Using tokio allowed me to use the `async` code without using "callback hell" so the code looks clean and readable in a single glance without the need to follow callbacks
KVRocks
PING_INLINE: 171821.30 requests per second, p50=0.183 msec
PING_MBULK: 173310.22 requests per second, p50=0.191 msec
SET: 115074.80 requests per second, p50=0.399 msec
GET: 163398.70 requests per second, p50=0.271 msec
INCR: 110741.97 requests per second, p50=0.415 msec
LPUSH: 89847.26 requests per second, p50=0.487 msec
RPUSH: 94428.70 requests per second, p50=0.487 msec
LPOP: 86880.97 requests per second, p50=0.535 msec
RPOP: 88339.23 requests per second, p50=0.527 msec
SableDB PING_INLINE: 90744.10 requests per second, p50=0.279 msec
PING_MBULK: 90826.52 requests per second, p50=0.279 msec
SET: 85763.29 requests per second, p50=0.311 msec
GET: 87336.24 requests per second, p50=0.295 msec
INCR: 68775.79 requests per second, p50=0.663 msec
LPUSH: 36589.83 requests per second, p50=1.031 msec
RPUSH: 38299.50 requests per second, p50=1.135 msec
LPOP: 38051.75 requests per second, p50=1.191 msec
RPOP: 37383.18 requests per second, p50=1.143 msec
KVRocks seems faster but certainly not a bad start