【问题标题】:Remove a member from multiple sets in Redis从 Redis 中的多个集合中删除成员
【发布时间】:2015-06-10 06:32:07
【问题描述】:

我的 redis 存储中有产品和类别。我正在使用类别集按指定类别查找产品。

SADD category:1 product1 product2 product3 product4
SADD category:2 product2 product5
SADD category:5 product1 product7

除了遍历所有类别之外,有没有办法从所有类别中删除单个产品?例如像这样的一些魔法:

SREM category:* product2

【问题讨论】:

    标签: redis


    【解决方案1】:

    没有神奇的命令。

    您可以做的是使用(又一个)Set 来跟踪每个产品的类别集。例如,在您的示例中,您必须这样做:

    SADD product2:categories category:1 category:2
    

    然后对于该 Set 的每个成员(SMEMBERSSSCAN 获取它们),为该类别的产品执行 SREM

    请注意,虽然这似乎是 Lua 脚本的完美候选者,但实际上并非如此。这是因为您将在没有通过 KEYS 输入构造明确提供其名称的情况下修改键(类别的集合),这是一种回避的做法,会使所述脚本与集群不兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多