QueuesBenchmarks

Valkey Streams Benchmarks

Streams is the primary scenario for persistent tasks in Valkey Queue. This campaign measures the complete message cycle:

XADD -> XREADGROUP -> XACK

What 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 XACK per message;
  • Batch ACK: up to 100 messages per read and one XACK for 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.

Next steps

On this page