Iain
Iain

Reputation: 1638

How to return all sets an object appears in using redis?

In redis, is there an easy method for asking 'which sets does an object appear in?' For example in the code below, I would like to know how to return which sets 'c' appears in?

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

It is not clear to me how to use SISMEMBER to query all available sets.

Thanks

Iain

Upvotes: 1

Views: 94

Answers (1)

tobiash
tobiash

Reputation: 860

SISMEMBER (http://redis.io/commands/sismember) is used to test if a certain value is member of a set. If you have multiple sets to test against, you will need to make multiple calls to SISMEMBER (using MULTI/EXEC you can send all member tests in one shot). A return value of '1' indicates that the item is in the set and '0' means that it was not found:

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]> SISMEMBER cset_members:1 c
(integer) 1
127.0.0.1:6379[1]> SISMEMBER cset_members:2 c
(integer) 1
127.0.0.1:6379[1]> SISMEMBER cset_members:3 c
(integer) 0
127.0.0.1:6379[1]>

Upvotes: 1

Related Questions