Valkey Streams Benchmarks
Streams is the primary scenario for persistent tasks in Valkey Queue. This campaign measures the complete message cycle:
XADD -> XREADGROUP -> XACKWhat is measured
The benchmark uses one publisher, one consumer, and one consumer group. A capacity is approved only when the complete cycle has zero loss, zero errors, zero pending entries, and p99 latency at or below 100 ms.
Two scenarios run for each plan and payload:
- Individual ACK: one message per read and one
XACKper message; - Batch ACK: up to 100 messages per read and one
XACKfor the batch.
Latency starts immediately before XADD and ends after the successful XACK
response. The report includes P50, P90, P95, and P99, using the worst value
across three 30-second runs.
Retention and storage
Each candidate uses a unique stream and consumer group. Entries are created
with XADD MAXLEN ~ to limit retention, and the stream is removed after the
run. The test measures throughput, latency, XLEN, estimated memory, and
pending entries; it does not try to fill the plan's persistent storage.
Persistent storage supports retention and recovery, but does not mean every
XADD waits for a synchronous fsync. Behavior also depends on Valkey
persistence configuration.
Status
The executor implementation is available in the local benchmark project. Per-plan results will be added only after the complete confirmation campaign; no Streams capacity is inferred from Pub/Sub results.
Limitations
This scenario measures one producer and one consumer. It does not represent
four-worker scaling, XAUTOCLAIM recovery, dead-letter streams, long-term
retention, or filling the storage quota.