代码之家  ›  专栏  ›  技术社区  ›  clarkk

redis-向列表中添加多个值并获取多个值

  •  0
  • clarkk  · 技术社区  · 6 年前

    我不知道 list 是正确的数据类型吗?

    我需要在列表中添加许多项,然后我必须提取所有项。。获取项目后,必须将其删除

    $list = 'the:list';
    $redis
        ->multi()
        ->lRange($list, 0, -1)
        ->lTrim($list, -1, 0)
        ->exec();
    

    上面的代码获取了这些项,但是在获取之后并没有删除它们?我做错什么了?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Lee    6 年前

    如果你按顺序把它们读出来,你可以用 LPOP RPOP 它将从列表中删除并返回它。

    如果您需要随机读取它们,那么可以使用集合而不是列表数据类型,然后您可以使用 SPOP

    根据您在原始问题中所做的一些评论,听起来您想读取整个列表,然后将其删除,但您是否担心在读取和删除操作之间插入项目?

    如果是这样,那么就使用redis transaction . 使用 LRange 接着是一个 DEL 在钥匙上。正如您从文档中看到的,该事务确保了在两个操作之间不会影响列表,因此对它的任何新添加都只会重新创建列表。

    按顺序。别人发出的请求 客户端在Redis的执行过程中被服务 交易。这保证了命令作为

    或者换言之,替换你的修剪,删除,你就可以走了。

        2
  •  1
  •   Sathish    6 年前

    一旦你拿到数据。然后呢密钥可能会过期。

    例如: https://redis.io/commands/expire