【问题标题】:Is it possible to get the members with the same score in a sorted set [Redis]?是否有可能在有序集合[Redis]中获得相同分数的成员?
【发布时间】:2012-02-17 23:29:54
【问题描述】:

我正在通过以下方式使用排序集。

我有一个名为“available:numbers”的普通集合,其中包含电话号码。现在假设用户注册,所以我们有一个名为“uid”的用户 ID。这个新用户被分配了一个来自“available:numbers”集合的号码。我有一个用户哈希,我可以在其中存储这个 user->alloted_number 映射。问题是如何存储同一个用户关联的多个号码?

我想知道是否可以在这里使用排序集?我可以从“available:numbers”中弹出一个数字,并将其添加到一个名为“used:numbers”的排序集中,其分数是用户的“uid”。由于 score 不需要是唯一的,并且所有成员都是唯一的,因此这似乎非常合适。我想知道的是,是否有可能在给定分数的情况下获得排序集的所有成员?这样我可以抽出属于特定“uid”的所有数字或者我应该忘记为此目的的排序集

谢谢

【问题讨论】:

    标签: redis


    【解决方案1】:

    我可以建议您为每个用户保留一组吗?所以:

    available:numbers = {1, 2, 3, 4}
    
    user:numbers:UID1 = {5, 6}
    user:numbers:UID2 = {7}
    

    对我来说,这似乎更易于管理。话虽如此,您确实可以按分数获取排序集的所有成员,请参阅ZRANGEBYSCORE

    zrangebyscore user:numbers UID UID
    

    我建议您阅读有关 redis 中所有可用命令的文档,该文档确实是一流的 - 您可以实时试用(大多数)命令 - 非常棒。

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 2013-02-06
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      相关资源
      最近更新 更多