module Redis::Commands::Sets

def sadd(key, *members)

Returns:
  • (Integer) - The number of members that were successfully added

Parameters:
  • member (String, Array) -- one member, or array of members
  • key (String) --
def sadd(key, *members)
  members.flatten!(1)
  send_command([:sadd, key].concat(members))
end

def sadd?(key, *members)

Returns:
  • (Boolean) - Wether at least one member was successfully added.

Parameters:
  • member (String, Array) -- one member, or array of members
  • key (String) --
def sadd?(key, *members)
  members.flatten!(1)
  send_command([:sadd, key].concat(members), &Boolify)
end

def scard(key)

Returns:
  • (Integer) -

Parameters:
  • key (String) --
def scard(key)
  send_command([:scard, key])
end

def sdiff(*keys)

Returns:
  • (Array) - members in the difference

Parameters:
  • keys (String, Array) -- keys pointing to sets to subtract
def sdiff(*keys)
  keys.flatten!(1)
  send_command([:sdiff].concat(keys))
end

def sdiffstore(destination, *keys)

Returns:
  • (Integer) - number of elements in the resulting set

Parameters:
  • keys (String, Array) -- keys pointing to sets to subtract
  • destination (String) -- destination key
def sdiffstore(destination, *keys)
  keys.flatten!(1)
  send_command([:sdiffstore, destination].concat(keys))
end

def sinter(*keys)

Returns:
  • (Array) - members in the intersection

Parameters:
  • keys (String, Array) -- keys pointing to sets to intersect
def sinter(*keys)
  keys.flatten!(1)
  send_command([:sinter].concat(keys))
end

def sinterstore(destination, *keys)

Returns:
  • (Integer) - number of elements in the resulting set

Parameters:
  • keys (String, Array) -- keys pointing to sets to intersect
  • destination (String) -- destination key
def sinterstore(destination, *keys)
  keys.flatten!(1)
  send_command([:sinterstore, destination].concat(keys))
end

def sismember(key, member)

Returns:
  • (Boolean) -

Parameters:
  • member (String) --
  • key (String) --
def sismember(key, member)
  send_command([:sismember, key, member], &Boolify)
end

def smembers(key)

Returns:
  • (Array) -

Parameters:
  • key (String) --
def smembers(key)
  send_command([:smembers, key])
end

def smismember(key, *members)

Returns:
  • (Array) -

Parameters:
  • members (String, Array) --
  • key (String) --
def smismember(key, *members)
  members.flatten!(1)
  send_command([:smismember, key].concat(members)) do |reply|
    reply.map(&Boolify)
  end
end

def smove(source, destination, member)

Returns:
  • (Boolean) -

Parameters:
  • member (String) -- member to move from `source` to `destination`
  • destination (String) -- destination key
  • source (String) -- source key
def smove(source, destination, member)
  send_command([:smove, source, destination, member], &Boolify)
end

def spop(key, count = nil)

Parameters:
  • count (Integer) --
  • key (String) --

Returns:
  • (String) -
def spop(key, count = nil)
  if count.nil?
    send_command([:spop, key])
  else
    send_command([:spop, key, Integer(count)])
  end
end

def srandmember(key, count = nil)

Returns:
  • (String) -

Parameters:
  • count (Integer) --
  • key (String) --
def srandmember(key, count = nil)
  if count.nil?
    send_command([:srandmember, key])
  else
    send_command([:srandmember, key, count])
  end
end

def srem(key, *members)

Returns:
  • (Integer) - The number of members that were successfully removed

Parameters:
  • member (String, Array) -- one member, or array of members
  • key (String) --
def srem(key, *members)
  members.flatten!(1)
  send_command([:srem, key].concat(members))
end

def srem?(key, *members)

Returns:
  • (Boolean) - Wether at least one member was successfully removed.

Parameters:
  • member (String, Array) -- one member, or array of members
  • key (String) --
def srem?(key, *members)
  members.flatten!(1)
  send_command([:srem, key].concat(members), &Boolify)
end

def sscan(key, cursor, **options)

Returns:
  • (String, Array) - the next cursor and all found members

Parameters:
  • options (Hash) --
  • cursor (String, Integer) -- the cursor of the iteration

Other tags:
    Example: Retrieve the first batch of keys in a set -
def sscan(key, cursor, **options)
  _scan(:sscan, cursor, [key], **options)
end

def sscan_each(key, **options, &block)

Returns:
  • (Enumerator) - an enumerator for all keys in the set

Parameters:
  • options (Hash) --

Other tags:
    Example: Retrieve all of the keys in a set -
def sscan_each(key, **options, &block)
  return to_enum(:sscan_each, key, **options) unless block_given?
  cursor = 0
  loop do
    cursor, keys = sscan(key, cursor, **options)
    keys.each(&block)
    break if cursor == "0"
  end
end

def sunion(*keys)

Returns:
  • (Array) - members in the union

Parameters:
  • keys (String, Array) -- keys pointing to sets to unify
def sunion(*keys)
  keys.flatten!(1)
  send_command([:sunion].concat(keys))
end

def sunionstore(destination, *keys)

Returns:
  • (Integer) - number of elements in the resulting set

Parameters:
  • keys (String, Array) -- keys pointing to sets to unify
  • destination (String) -- destination key
def sunionstore(destination, *keys)
  keys.flatten!(1)
  send_command([:sunionstore, destination].concat(keys))
end