【问题标题】:Redis LRANGE Pop AtomicityRedis LRANGE 流行原子性
【发布时间】:2021-04-03 19:17:53
【问题描述】:

我有一个 redis 数据存储,其中存储了唯一的密钥。现在我的应用服务器将向 redis 发送多个请求以从一开始就获取大约 100 个密钥,我打算使用LRANGE 命令来实现相同的目的。

但我的要求是每个请求都应该收到一组唯一的密钥,这意味着如果一个请求去 redis 获取 100 个密钥,那么这些密钥将来永远不会返回给任何请求。

正如我所见,redis 操作是原子的,所以我可以假设如果有多个请求同时来自应用服务器到 redis,因为 redis 是单线程的,所以它将执行LRANGE mylist 0 100 并且一旦完成(意味着一旦从列表中获取并删除了 100 个键),只有下一个请求才会被处理,所以原子性是内置的,对吗? 有没有可能在任何情况下两个请求都可以获得相同的 100 个密钥?

【问题讨论】:

    标签: redis atomic redis-cluster


    【解决方案1】:

    听起来您真正想要的命令是LPOP,因为LRANGE 不会从列表中删除任何内容。

    LPOP mylist 101
    

    而且,是的,这个命令是原子的,所以没有两个客户端会收到相同的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 2015-10-21
      • 2018-06-20
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多