从Redis FIFO队列中弹性地弹出多个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Redis FIFO队列中弹性地弹出多个值相关的知识,希望对你有一定的参考价值。

我在Redis中使用RPUSH / LPUSH和RPOP / LPOP设置了一个先进先出(FIFO)队列,如何从队列中原子弹出多个项目?如果LIST和提到的命令不支持它,我应该使用什么呢?

答案

没有执行多个弹出窗口的命令,但您可以将它们包装在transactionLua script中。

另一答案

Redis transactions保证是原子的,因此可以用来首先使用LRANGE获取项目,然后使用LTRIM删除它们:

> RPUSH l 1 2 3 4 5
LRANGE mylist 0 -1
> MULTI
OK
> LRANGE l 0 1
QUEUED
> LTRIM l 2 -1
QUEUED
> EXEC
1) 1) "1"
   2) "2"
2) OK
> LRANGE l 0 -1
1) "3"
2) "4"
3) "5"

以上是关于从Redis FIFO队列中弹性地弹出多个值的主要内容,如果未能解决你的问题,请参考以下文章

FIFO队列管理多个Dialog显示

栈队列算法题

Java Stack - 如何从堆栈中弹出()和推送()多个元素?

Sublimelinter - 如何在错误时禁用窗口弹出

Redis 列表(List)

Redis 列表(List)