如何使用redis计算所有设置的交叉点?

时间:2016-02-20 23:13:32

标签: redis

是否有一种标准方法可以使用redis返回所有设置的交叉点?

例如,使用下面的数据我想返回所有集合之间共同的成员数量,共计3次比较

HMSET cset_details:1 name 'set 1' description 'my first set' date 'today'
HMSET cset_details:2 name 'set 2' description 'my second set' date 'today'
HMSET cset_details:2 name 'set 3' description 'my third set' date 'today'
SADD cset_members:1 a b c d
SADD cset_members:2  c d e
SADD cset_members:3 d e f g

由于

伊恩

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找SINTERSINTERSTORE命令(请参阅http://redis.io/commands/sinterhttp://redis.io/commands/sinterstore

127.0.0.1:6379[1]> SADD cset_members:1 a b c d
(integer) 4
127.0.0.1:6379[1]> SADD cset_members:2 c d e
(integer) 3
127.0.0.1:6379[1]> SADD cset_members:3 d e f g
(integer) 4
127.0.0.1:6379[1]> SINTER cset_members:1 cset_members:2 cset_members:3
1) "d"
127.0.0.1:6379[1]> SINTERSTORE in_all_sets cset_members:1 cset_members:2 cset_members:3
(integer) 1
127.0.0.1:6379[1]> SMEMBERS in_all_sets
1) "d"
127.0.0.1:6379[1]>