【问题标题】:Pop multiple values atomically from a Redis FIFO queue从 Redis FIFO 队列中以原子方式弹出多个值
【发布时间】:2018-08-12 23:07:54
【问题描述】:

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

【问题讨论】:

    标签: redis queue fifo


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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"
      

      【讨论】:

        猜你喜欢
        • 2014-01-04
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多