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 16Results
Current results on a release build, Apple M-series development machine:
| Operation | No 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):
| Operation | avg | p50 | p95 | p99 | max |
|---|---|---|---|---|---|
| SET | 0.290ms | 0.279ms | 0.463ms | 0.743ms | 1.671ms |
| GET | 0.178ms | 0.175ms | 0.255ms | 0.343ms | 0.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.