Valkey Queue Benchmarks
This page records the confirmation campaign for the Valkey Queue profile on the queue-free, starter, basic, premium, and enterprise plans. The tests measured JSON messages through Pub/Sub and only accepted candidates with zero loss and p99 below 100 ms.
Data status: these values come from the corrected campaign. Each published capacity passed three 30-second runs; P50, P90, P95, and P99 are the worst values observed across those runs. First rejected is shown only when measured in the same search.
The final result format for each measurement will be:
| Payload | Validated capacity | Safe operating rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|
Validated capacity is the highest approved rate. The safe operating rate is 80% of that capacity, rounded down to a multiple of 50 msg/s. The first rejected rate marks the observed boundary.
When “First rejected” is not measured, the rate is the highest confirmed
candidate from that campaign, but the upper boundary has not been measured.
queue-free plan
| Resource | Configuration |
|---|---|
| vCPU | 0.25 |
| RAM | 256 MiB |
| Persistent storage | 1 GB |
Persistent storage is part of the plan resources, but it does not make Pub/Sub persistent. Messages published through Pub/Sub may be lost when a subscriber disconnects.
Confirmed results
| Payload | Capacity | Safe rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|---|---|---|---|---|---|---|---|
| 256 B | 850/s | 650/s | 76,502 | 12.48 ms | 15.27 ms | 50.69 ms | 90.82 ms | 900/s |
| 1 KiB | 600/s | 450/s | 54,002 | 0.64 ms | 8.38 ms | 49.59 ms | 99.49 ms | 1,050/s |
| 4 KiB | 500/s | 400/s | 45,003 | 13.93 ms | 16.00 ms | 48.90 ms | 84.63 ms | 550/s |
| 16 KiB | 150/s | 100/s | 13,502 | 3.40 ms | 7.31 ms | 38.91 ms | 70.54 ms | 200/s |
All published points had zero lost, duplicated, or out-of-order messages. The values are a reference for this run and are not an SLA: network, region, client, TLS, and concurrent load can change the result.
queue-starter plan
| Resource | Configuration |
|---|---|
| vCPU | 0.5 |
| RAM | 512 MiB |
Persistent storage for this plan was not provided for this run and is not inferred from this benchmark.
Confirmed results
| Payload | Capacity | Safe rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|---|---|---|---|---|---|---|---|
| 256 B | 1,600/s | 1,250/s | 144,004 | 0.82 ms | 3.09 ms | 5.91 ms | 53.47 ms | 1,650/s |
| 1 KiB | 1,550/s | 1,200/s | 139,505 | 1.08 ms | 1.62 ms | 8.85 ms | 79.73 ms | 1,600/s |
| 4 KiB | 600/s | 450/s | 54,002 | 14.48 ms | 15.02 ms | 15.95 ms | 42.30 ms | 700/s |
| 16 KiB | 150/s | 100/s | 13,502 | 16.83 ms | 17.92 ms | 20.66 ms | 49.12 ms | 200/s |
All queue-starter points had zero lost, invalid, duplicated, or out-of-order
messages. Plan resources are informational; the result remains subject to the
conditions of the run.
queue-basic plan
| Resource | Configuration |
|---|---|
| vCPU | 1 |
| RAM | 1 GiB |
| Persistent storage | 5 GB |
Confirmed results
| Payload | Capacity | Safe rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|---|---|---|---|---|---|---|---|
| 256 B | 7,250/s | 5,800/s | 652,510 | 11.92 ms | 16.56 ms | 22.91 ms | 45.83 ms | 7,320/s |
| 1 KiB | 2,850/s | 2,250/s | 256,507 | 12.46 ms | 13.45 ms | 14.04 ms | 18.42 ms | 2,900/s |
| 4 KiB | 843/s | 650/s | 75,873 | 13.55 ms | 20.52 ms | 29.47 ms | 38.04 ms | 887/s |
| 16 KiB | 100/s | 50/s | 9,001 | 15.99 ms | 16.82 ms | 16.93 ms | 18.96 ms | 150/s |
All queue-basic points had zero lost, invalid, duplicated, or out-of-order
messages. Plan resources are informational; the result remains subject to the
conditions of the run.
queue-premium plan
| Resource | Configuration |
|---|---|
| vCPU | 2 |
| RAM | 2 GB |
| Persistent storage | 5 GB |
Confirmed results
| Payload | Capacity | Safe rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|---|---|---|---|---|---|---|---|
| 256 B | 7,900/s | 6,300/s | 711,018 | 2.54 ms | 56.14 ms | 68.32 ms | 92.78 ms | 7,950/s |
| 1 KiB | 3,950/s | 3,150/s | 355,506 | 0.88 ms | 1.48 ms | 2.54 ms | 6.32 ms | 4,000/s |
| 4 KiB | 2,000/s | 1,600/s | 180,005 | 1.45 ms | 2.82 ms | 6.86 ms | 20.00 ms | not measured |
| 16 KiB | 300/s | 200/s | 27,002 | 3.41 ms | 3.68 ms | 3.94 ms | 7.38 ms | 350/s |
All queue-premium points had zero lost, invalid, duplicated, or out-of-order
messages. Plan resources are informational; the result remains subject to the
conditions of the run.
queue-enterprise plan
| Resource | Configuration |
|---|---|
| vCPU | 8 |
| RAM | 8 GB |
| Persistent storage | 5 GB |
Confirmed results
| Payload | Capacity | Safe rate | Messages | P50 | P90 | P95 | P99 | First rejected |
|---|---|---|---|---|---|---|---|---|
| 256 B | 6,350/s | 5,050/s | 571,510 | 1.23 ms | 14.92 ms | 20.79 ms | 43.70 ms | 6,400/s |
| 1 KiB | 3,550/s | 2,800/s | 319,509 | 1.34 ms | 3.12 ms | 7.89 ms | 42.53 ms | 3,600/s |
| 4 KiB | 850/s | 650/s | 76,503 | 2.04 ms | 2.63 ms | 3.15 ms | 7.88 ms | 900/s |
| 16 KiB | 150/s | 100/s | 13,503 | 16.86 ms | 17.87 ms | 19.13 ms | 25.56 ms | not measured |
All queue-enterprise points had zero lost, invalid, duplicated, or
out-of-order messages. Plan resources are informational; the result remains
subject to the conditions of the run.
How the benchmark works
The Node.js script uses iovalkey and two separate connections: one for
PUBLISH and one for SUBSCRIBE. Each JSON message receives a run ID, a
sequence number, and a monotonic timestamp. The subscriber uses these fields
to count loss, duplicates, ordering, and latency.
For each JSON size, the script warms up the connection for 10 seconds, finds a success/failure interval with exponential search, refines the boundary with binary search, and confirms the candidate in three independent 30-second runs. The report calculates P50, P90, P95, and P99 per run and uses the worst value across confirmations.
This result measures Pub/Sub with one publisher and one subscriber. It does not measure Streams, consumer groups, acknowledgments, replay, pending-message recovery, or task durability. For business work that must not be lost, see the recommended Streams and consumer groups pattern.