# Module: Oxblood::Commands::Sets

Included in:
Oxblood::Commands
Defined in:
lib/oxblood/commands/sets.rb

## Instance Method Summary collapse

• Add one or more members to a set.

• Get the number of members in a set.

• Subtract multiple sets.

• Subtract multiple sets and store the resulting set in a key.

• Intersect multiple sets.

• Intersect multiple sets and store the resulting key in a key.

• Determine if a given value is a member of a set.

• Get all the members in a set.

• Move a member from one set to another.

• Remove and return one or multiple random members from a set.

• Get one or multiple random members from a set.

• Remove one or more members from a set.

• Incrementally iterate Set elements.

• Add multipe sets and store the resulting set in a key.

## Instance Method Details

Add one or more members to a set

Parameters:

• key (String)

under which store set

• members (String, Array<String>)

to store

Returns:

• (Integer)

the number of elements that were added to the set, not including all the elements already present into the set.

 ``` 14 15 16``` ```# File 'lib/oxblood/commands/sets.rb', line 14 def sadd(key, *members) run(*members.unshift(:SADD, key)) end```

### #scard(key) ⇒ Integer

Get the number of members in a set

Parameters:

• key (String)

Returns:

• (Integer)

the cardinality (number of elements) of the set, or 0 if key does not exist

 ``` 25 26 27``` ```# File 'lib/oxblood/commands/sets.rb', line 25 def scard(key) run(:SCARD, key) end```

### #sdiff(*keys) ⇒ Array

Subtract multiple sets

Parameters:

• keys (String, Array<String>)

Returns:

• (Array)

array with members of the resulting set

 ``` 35 36 37``` ```# File 'lib/oxblood/commands/sets.rb', line 35 def sdiff(*keys) run(*keys.unshift(:SDIFF)) end```

### #sdiffstore(destination, *keys) ⇒ Integer

Subtract multiple sets and store the resulting set in a key

Parameters:

• destination (String)

key

• keys (String, Array<String>)

of sets to diff

Returns:

• (Integer)

the number of elements in the resulting set

 ``` 46 47 48``` ```# File 'lib/oxblood/commands/sets.rb', line 46 def sdiffstore(destination, *keys) run(*keys.unshift(:SDIFFSTORE, destination)) end```

### #sinter(*keys) ⇒ Array

Intersect multiple sets

Parameters:

• keys (String, Array<String>)

to intersect

Returns:

• (Array)

array with members of the resulting set

 ``` 56 57 58``` ```# File 'lib/oxblood/commands/sets.rb', line 56 def sinter(*keys) run(*keys.unshift(:SINTER)) end```

### #sinterstore(destination, *keys) ⇒ Integer

Intersect multiple sets and store the resulting key in a key

Parameters:

• destination (String)

key

• keys (String, Array<String>)

of sets to intersect

Returns:

• (Integer)

the number of elements in the resulting set

 ``` 67 68 69``` ```# File 'lib/oxblood/commands/sets.rb', line 67 def sinterstore(destination, *keys) run(*keys.unshift(:SINTERSTORE, destination)) end```

### #sismember(key, member) ⇒ Integer

Determine if a given value is a member of a set

Parameters:

• key (String)
• member (String)

Returns:

• (Integer)

1 if the element is a member of the set or 0 if the element is not a member of the set, or if key does not exist

 ``` 79 80 81``` ```# File 'lib/oxblood/commands/sets.rb', line 79 def sismember(key, member) run(:SISMEMBER, key, member) end```

### #smembers(key) ⇒ Array

Get all the members in a set

Parameters:

• key (String)

Returns:

• (Array)

all elements of the set

 ``` 89 90 91``` ```# File 'lib/oxblood/commands/sets.rb', line 89 def smembers(key) run(:SMEMBERS, key) end```

### #smove(source, destination, member) ⇒ Integer

Move a member from one set to another

Parameters:

• source (String)
• destination (String)
• member (String)

Returns:

• (Integer)

1 if the element is moved, or 0 if the element is not a member of source and no operation was performed

 ``` 102 103 104``` ```# File 'lib/oxblood/commands/sets.rb', line 102 def smove(source, destination, member) run(:SMOVE, source, destination, member) end```

### #spop(key, count = nil) ⇒ String, Array

Remove and return one or multiple random members from a set

Parameters:

• key (String)
• count (Integer) (defaults to: nil)

Returns:

• (String)

without the additional count argument the command returns the removed element, or nil when key does not exist

• (Array)

when the additional count argument is passed the command returns an array of removed elements, or an empty array when key does not exist.

 ``` 117 118 119 120 121``` ```# File 'lib/oxblood/commands/sets.rb', line 117 def spop(key, count = nil) args = [:SPOP, key] args << count if count run(*args) end```

### #srandmember(key, count = nil) ⇒ String, ...

Get one or multiple random members from a set

Parameters:

• key (String)
• count (Integer) (defaults to: nil)

Returns:

• (String, nil)

without the additional count argument the command returns string with the randomly selected element, or nil when key does not exist

• (Array)

when the additional count argument is passed the command returns an array of elements, or an empty array when key does not exist

 ``` 134 135 136 137 138``` ```# File 'lib/oxblood/commands/sets.rb', line 134 def srandmember(key, count = nil) args = [:SRANDMEMBER, key] args << count if count run(*args) end```

### #srem(key, *members) ⇒ Integer

Remove one or more members from a set

Parameters:

• key (String)
• members (Array)

to remove

Returns:

• (Integer)

the number of members that were removed from the set, not including non existing members

 ``` 148 149 150``` ```# File 'lib/oxblood/commands/sets.rb', line 148 def srem(key, *members) run(*members.unshift(:SREM, key)) end```

### #sscan(key, cursor, opts = {}) ⇒ Array

Incrementally iterate Set elements

Parameters:

• cursor (Integer)
• opts (Hash) (defaults to: {})

Options Hash (opts):

• :count (Integer)

Amount of work that should be done at every call in order to retrieve elements from the collection.

• :match (String)

Returns:

• (Array)

two elements array, where the first element is String representing an unsigned 64 bit number (the cursor), and the second element is an Array of elements.

 ``` 186 187 188 189 190``` ```# File 'lib/oxblood/commands/sets.rb', line 186 def sscan(key, cursor, opts = {}) args = [:SSCAN, key, cursor] Scan.merge_opts!(args, opts) run(*args) end```

### #sunion(*keys) ⇒ Array

Parameters:

• keys (String, Array<String>)

Returns:

• (Array)

list with members of the resulting set

 ``` 158 159 160``` ```# File 'lib/oxblood/commands/sets.rb', line 158 def sunion(*keys) run(*keys.unshift(:SUNION)) end```

### #sunionstore(destination, *keys) ⇒ Integer

Add multipe sets and store the resulting set in a key

Parameters:

• destination (String)
• keys (String, Array<String>)

Returns:

• (Integer)

the number of elements in the resulting set

 ``` 169 170 171``` ```# File 'lib/oxblood/commands/sets.rb', line 169 def sunionstore(destination, *keys) run(*keys.unshift(:SUNIONSTORE, destination)) end```