如何使用redis ruby​​计算redis中的set complement操作?

时间:2012-01-24 06:25:40

标签: ruby redis

对于redis中的两个集合,有运营商可以获得联盟,交叉点等。

但我找不到2套之间的补充?

无论如何,我错过了搜索/知道如何获得SETS的补充?

示例:

redis示例:

redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFF key1 key2
1) "a"
2) "b"
redis>

diff只返回“a”和“b”。

但我想要“a”,“b”,“d”和“e”这是我认为它的补充。

如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

这可能是你想要的:

http://redis.io/commands/sdiff

或者,如果您想存储结果:

http://redis.io/commands/sdiffstore

ruby​​适配器严格遵循redis api,因此具有相同的命令。

<强>更新

从更新中我推断出你想要的对称差异。您不能在一次操作中执行此操作,但可以多次执行此操作:

redis> sdiffstore diff1 key1 key2 
redis> sdiffstore diff2 key2 key1
redis> sunion diff1 diff2