从Redis中的多个集中删除成员

时间:2015-06-09 12:32:20

标签: redis

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

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

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

SREM category:* product2

1 个答案:

答案 0 :(得分:1)

没有神奇的命令。

您可以做的是使用(又一个)设置为跟踪每个产品的类别集。例如,在您的示例中,您必须执行以下操作:

SADD product2:categories category:1 category:2

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

请注意,虽然这似乎是Lua脚本的完美候选者,但实际上并非如此。这是因为您要修改键(类别集)而不通过KEYS输入构造明确提供它们的名称,这是一种避免使用该脚本非集群兼容的实践。