*Redis LPUSH 命令

在 List 头部(左侧)插入一个或多个元素。


*语法

LPUSH key element [element ...]

*参数说明

参数 类型 必填 说明
key String List 的键名
element String 插入的元素,可一次插入多个

*返回值

条件 返回值
插入成功 返回插入后 List 的长度
key 非 List 类型 WRONGTYPE 错误

*时间复杂度

O(1)(单个元素),O(N)(N 个元素)


*示例

> LPUSH mylist a
(integer) 1

> LPUSH mylist b
(integer) 2

# 一次插入多个
> LPUSH mylist c d e
(integer) 5

> LRANGE mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"

*常见错误

  1. 对非 List 类型使用:若 key 是 String/Hash 等,会返回 WRONGTYPE。

*最佳实践

  1. 队列头部插入:LPUSH + RPOP 实现先进先出队列(FIFO)。
  2. 栈用法:LPUSH + LPOP 实现后进先出栈(LIFO)。
  3. 批量插入:一次 LPUSH 多个元素,减少网络往返。
  4. 控制 List 长度:配合 LTRIM key 0 999 限制队列长度,防止无限增长。

*FAQ

Q: LPUSH 和 RPUSH 有什么区别? A: LPUSH 在头部插入,RPUSH 在尾部插入。使用 LPUSH+RPOPRPUSH+LPOP 都可实现 FIFO 队列。

Q: LPUSH 可以插入重复元素吗? A: 可以。List 允许重复元素,与 Set 不同。

Q: 如何实现固定长度的队列? A: 插入后用 LTRIM key 0 N-1 裁剪,原子操作保证队列长度不超过 N。