Skip to main content

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.

Dragonfly6,020,000OPS
Valkey866,3006.9× OPS
Redis661,9009.1× OPS
01.63M3.25M4.88M6.5M
operations / second
EngineThroughputp50p99p99.9Avg Latency
Dragonfly6.02M ops/s0.525 ms5.972 ms11.560 ms0.778 ms
Valkey866.3K ops/s5.416 ms11.628 ms15.410 ms5.528 ms
Redis661.9K ops/s7.110 ms11.702 ms18.645 ms7.239 ms

Methodology

HardwareServer: m7g.8xlarge (arm64) · Client: c6gn.8xlarge (arm64)
Client32 threads, 5 connections, pipeline 30
Dataset100M keys, 128B values, uniform key distribution
Duration300s (10s warmup), 1 trial
Measured2026-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.