Memorust

Benchmarks

Throughput measured with redis-benchmark.

Memorust can be benchmarked with the standard redis-benchmark tool, since it speaks RESP.

Running the benchmark

# without pipelining
redis-benchmark -p 6379 -t set,get -n 100000

# with pipelining (reveals server throughput rather than round-trip latency)
redis-benchmark -p 6379 -t set,get -n 300000 -P 16

Results

Current results on a release build, Apple M-series development machine:

OperationNo pipeline (-P 1)Pipelined (-P 16)
SET~142k ops/sec~264k ops/sec
GET~163k ops/sec~1.27M ops/sec

Latency for the no-pipeline run (-n 100000, 50 parallel clients):

Operationavgp50p95p99max
SET0.290ms0.279ms0.463ms0.743ms1.671ms
GET0.178ms0.175ms0.255ms0.343ms0.663ms

Interpreting the numbers

Without pipelining, the benchmark is dominated by network round-trips, so it mostly measures latency. Under pipelining, the server's own ceiling shows: GET scales far past SET because reads run concurrently under a shared lock, while writes still serialize on the exclusive lock.

Earlier versions reported ~75k SET / ~150k GET. The SET gain comes from the buffered AOF writer; the GET gain comes from serving reads under a shared lock.

Results may vary depending on hardware and implementation version.

On this page