LPUSH
Syntax
LPUSH key element [element ...]
Time complexity: O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.
ACL categories: @write, @list, @fast
Insert all the specified values at the head of the list stored at key.
If key does not exist, it is created as empty list before performing the push
operations.
When key holds a value that is not a list, an error is returned.
It is possible to push multiple elements using a single command call just
specifying multiple arguments at the end of the command.
Elements are inserted one after the other to the head of the list, from the
leftmost element to the rightmost element.
So for instance the command LPUSH mylist a b c will result into a list
containing c as first element, b as second element and a as third element.
Return
Integer reply: the length of the list after the push operations.
Examples
dragonfly> LPUSH mylist "world"
(integer) 1
dragonfly> LPUSH mylist "hello"
(integer) 2
dragonfly> LRANGE mylist 0 -1
1) "hello"
2) "world"
Benchmark
Sustained throughput for LPUSH on a single instance, measured against Redis and Valkey on identical hardware. Higher is better.
| Engine | Throughput | p50 | p99 | p99.9 | Avg Latency |
|---|---|---|---|---|---|
| Dragonfly | 6.02M ops/s | 0.525 ms | 5.972 ms | 11.560 ms | 0.778 ms |
| Valkey | 866.3K ops/s | 5.416 ms | 11.628 ms | 15.410 ms | 5.528 ms |
| Redis | 661.9K ops/s | 7.110 ms | 11.702 ms | 18.645 ms | 7.239 ms |
Methodology
| Hardware | Server: m7g.8xlarge (arm64) · Client: c6gn.8xlarge (arm64) |
| Client | 32 threads, 5 connections, pipeline 30 |
| Dataset | 100M keys, 128B values, uniform key distribution |
| Duration | 300s (10s warmup), 1 trial |
| Measured | 2026-07-29 |
Ran through dfly_bench until throughput stabilized; the reported figure is the median throughput sampled during the run. Harness and raw output: dragonflydb/benchmarking.