Benchmarks
Throughput medida com o redis-benchmark.
O Memorust pode ser avaliado com a ferramenta padrão redis-benchmark, já que
fala RESP.
Rodando o benchmark
# sem pipelining
redis-benchmark -p 6379 -t set,get -n 100000
# com pipelining (revela a throughput do servidor, não a latência de round-trip)
redis-benchmark -p 6379 -t set,get -n 300000 -P 16Resultados
Resultados atuais em build de release, máquina de desenvolvimento Apple série M:
| Operação | Sem pipeline (-P 1) | Com pipeline (-P 16) |
|---|---|---|
| SET | ~142k ops/seg | ~264k ops/seg |
| GET | ~163k ops/seg | ~1,27M ops/seg |
Latência da execução sem pipeline (-n 100000, 50 clientes paralelos):
| Operação | méd | p50 | p95 | p99 | máx |
|---|---|---|---|---|---|
| SET | 0,290ms | 0,279ms | 0,463ms | 0,743ms | 1,671ms |
| GET | 0,178ms | 0,175ms | 0,255ms | 0,343ms | 0,663ms |
Interpretando os números
Sem pipelining, o benchmark é dominado pelos round-trips de rede, então ele mede principalmente a latência. Com pipelining, aparece o teto do próprio servidor: o GET escala muito além do SET porque as leituras rodam concorrentes sob um lock compartilhado, enquanto as escritas ainda serializam no lock exclusivo.
Versões anteriores reportavam ~75k SET / ~150k GET. O ganho no SET vem do escritor AOF bufferizado; o ganho no GET vem de servir leituras sob um lock compartilhado.
Os resultados podem variar conforme o hardware e a versão da implementação.