首页/数据/数据库速查/LMOVE / RPOPLPUSH 可靠队列转移
Redis 命令96 条

LMOVE / RPOPLPUSH 可靠队列转移

原子地把元素从源列表弹出并推入目标列表(可跨两端指定方向);消费者崩溃前进程在,元素仍在备份列表里,可重放。

数据库速查数据更新于 2026-10-12

示例

示例
RPUSH pending job1 job2
LMOVE pending processing LEFT RIGHT   # job1 移到 processing
LRANGE processing 0 -1                # job1(备份列表)
# 处理成功后再从备份列表删掉:
LREM processing 1 job1
# 旧命令等价(固定左弹右推):
RPOPLPUSH pending processing
语法LMOVE source destination LEFT|RIGHT LEFT|RIGHT
方向两个方向参数分别控制源弹出端与目标推入端
原子性弹出+推入原子完成
这是「安全队列」的经典方案:pending -> processing -> 确认后删除;处理超时可用另一个协程把 processing 中滞留元素搬回 pending。

易错点

  • 忘记消费确认步骤:处理失败的元素永远留在 processing 里无人回收
  • 用 LMOVE 环形自移做轮询检测:库里的经典反模式,会空转占 CPU

数据来源与参考

  • Redis 官方文档: LMOVE
  • Redis 官方文档: RPOPLPUSH

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌