2012-01-24 1 views
1

Для двух наборов в redis есть операторы, чтобы получить Union, Intersection и т. Д.Как вычислить операцию набора дополнений в redis с помощью redis ruby?

Но я не смог найти их для РАЗМЕЩЕНИЯ между 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», «d» и «e», что я считаю своим дополнением.

Как это можно достичь?

ответ

3

Это, вероятно, что вы хотите:

http://redis.io/commands/sdiff

Или, если вы хотите сохранить результат:

http://redis.io/commands/sdiffstore

рубин адаптер следует за REDIS апи достаточно строго, так имеет те же команды.

обновление:

Из обновлений выводят вы хотите симметричную разницу. Вы не можете сделать это за одну операцию, но вы можете сделать это несколькими способами:

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

В поле комментариев отключен фрагмент кода. Итак, я обновил вопрос. Можете ли вы взглянуть на него еще раз? – Autodidact