Benchmarks · Key-value · Seven engines · Over the wire

Rostam vs Redis, Memcached, Dragonfly & Aerospike

Rostam is two engines, so the KV half gets measured the same way as the vector halfseven engines over the wire, one machine, one session, with the caveats printed as large as the wins.

Raw GET throughput and p99 tails against Redis, Memcached, Dragonfly, Aerospike, Valkey and KeyDB — then replicated RF=2 writes at matched commit semantics. A self-hosted key-value store in Go — the second engine in the same Go module as the vector engine.

The numbers

Seven engines, over the wire.

Raw GET throughput first — one machine, one session. Replicated writes below.

GET throughput against concurrency for Rostam, Memcached, Dragonfly and Aerospike. Memcached leads at 8 connections; Rostam pulls ahead from 64 onward and holds roughly 730k operations per second.
GET operations per second by connection count, across seven key-value engines
GET ops/s Rostam Memcached Dragonfly Aerospike Valkey Redis KeyDB
64 conns 726.1k 682.9k532.0k510.6k239.1k228.3k206.3k
256 conns 732.4k 681.7k551.6k516.9k227.9k219.6k208.8k

p99 at 512 connections: Rostam 2.02 ms, best of the seven (Memcached 2.32, Aerospike 2.75, Redis 4.69). Memcached wins at 8 connections; Rostam pulls ahead as concurrency rises.

Replicated writes, matched commit semantics

RF=2 against Aerospike CE 8.1 — both acking only after the replica has the write.

Replicated write throughput against concurrency at RF=2 with replica-ack. Aerospike is slightly ahead at 8 connections; Rostam overtakes at 32 and reaches 113.6k against Aerospike's 85.9k at 128, while Redis, Valkey and KeyDB flatten together near 43k.
Replicated write operations per second at RF=2 with replica-ack, by connection count; the per-column winner is emphasised
RF=2, replica-ack 8 conns 32 conns 128 conns p50 @128
Rostam PB 35.6k80.9k113.6k0.99 ms
Aerospike CE 38.0k57.0k85.9k1.35 ms
Redis 7 (WAIT 1) 28.7k43.2k42.9k2.95 ms
Valkey 8 (WAIT 1) 28.0k42.2k45.9k2.72 ms

Brass marks the per-column winner — which is why Aerospike keeps the 8-connection cell.

Methodology

Read this before you quote it.

The bounds on the key-value numbers, printed as large as the wins.

The lead is a scaling property

Aerospike wins at 8 connections — and has the better tail there — while Rostam overtakes at 32 and leads +42% / +32% at 32/128, with the better median from 32 upward. The Redis-protocol engines flatten above 32 connections, which is a per-instance ceiling.

Reproduced — and networked

Measured twice on the same box four days apart; Rostam reproduced within ~1–4% at the anchor points. Over a real network on separate nodes it tightens to near-parity, with Rostam's tail still ahead (p99 ~8 ms vs 17–22 ms).

Both runs, the full posture matrix, and why a single load generator invalidates this comparison entirely are in the open benchmark repository. And Rostam's other half — the vector engine — is measured with the same discipline on the vector benchmark page.

Don't take the chart's word for it.

curl -fsSL https://rostamlabs.com/install.sh | sh