Skip to content

六、队列模型:LPUSH + BRPOP = FIFO ​

6.1 为什么 LPUSH + RPOP 是 FIFO ​

LPUSH(左端推入)     RPOP/BRPOP(右端弹出)
     ←─────                ─────→
[4, 3, 2, 1]                      取出 1
[4, 3, 2]                        取出 2
[4, 3]                           取出 3
[4]                              取出 4

顺序:1 → 2 → 3 → 4(先进先出 = FIFO)

6.2 对比其他组合 ​

推入弹出行为顺序
LPUSHRPOP左推右弹FIFO(队列)
LPUSHLPOP左推左弹LIFO(栈)
RPUSHLPOP右推左弹FIFO(队列)
RPUSHRPOP右推右弹LIFO(栈)

6.3 本项目的完整队列流 ​

API 端                         Worker 端

LPUSH task:queue 6     ──►    [6]
LPUSH task:queue 7     ──►    [7, 6]
LPUSH task:queue 8     ──►    [8, 7, 6]
                              BRPOP ──►  取出 6(最早推入)
                             [8, 7]
                              BRPOP ──►  取出 7
                             [8]
                              BRPOP ──►  取出 8
                             []