module RedisCluster::Function::Set

Set implement redis sets commands. There will be some adjustment for cluster. see redis.io/commands#set. Most of the code are copied from github.com/redis/redis-rb/blob/master/lib/redis.rb.

SETTER = [:sadd, :spop, :srem, :sdiffstore, :sinterstore, :smove, :sunionstore] GETTER = [:scard, :sismember, :smembers, :srandmember, :sscan, :sdiff, :sinter, :sunion]

Public Instance Methods

sadd(key, member) click to toggle source

Add one or more members to a set.

@param [String] key @param [String, Array<String>] member one member, or array of members @return [Fixnum] number of members that were successfully added

# File lib/redis_cluster/function/set.rb, line 29
def sadd(key, member)
  call(key, [:sadd, key, member])
end
scard(key) click to toggle source

Get the number of members in a set.

@param [String] key @return [Fixnum]

# File lib/redis_cluster/function/set.rb, line 20
def scard(key)
  call(key, [:scard, key], read: true)
end
sdiff(*keys) click to toggle source

Subtract multiple sets.

@param [String, Array<String>] keys keys pointing to sets to subtract @return [Array<String>] members in the difference

# File lib/redis_cluster/function/set.rb, line 87
def sdiff(*keys)
  call(keys, [:sdiff] + keys, read: true)
end
sdiffstore(destination, *keys) click to toggle source

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

@param [String] destination destination key @param [String, Array<String>] keys keys pointing to sets to subtract @return [Fixnum] number of elements in the resulting set

# File lib/redis_cluster/function/set.rb, line 96
def sdiffstore(destination, *keys)
  call([keys, destination], [:sdiffstore, destination] + keys)
end
sinter(*keys) click to toggle source

Intersect multiple sets.

@param [String, Array<String>] keys keys pointing to sets to intersect @return [Array<String>] members in the intersection

# File lib/redis_cluster/function/set.rb, line 104
def sinter(*keys)
  call(keys, [:sinter] + keys, read: true)
end
sinterstore(destination, *keys) click to toggle source

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

@param [String] destination destination key @param [String, Array<String>] keys keys pointing to sets to intersect @return [Fixnum] number of elements in the resulting set

# File lib/redis_cluster/function/set.rb, line 113
def sinterstore(destination, *keys)
  call([keys, destination], [:sinterstore, destination] + keys)
end
sismember(key, member) click to toggle source

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

@param [String] key @param [String] member @return [Boolean]

# File lib/redis_cluster/function/set.rb, line 71
def sismember(key, member)
  call(key, [:sismember, key, member], transform: Redis::Boolify, read: true)
end
smembers(key) click to toggle source

Get all the members in a set.

@param [String] key @return [Array<String>]

# File lib/redis_cluster/function/set.rb, line 79
def smembers(key)
  call(key, [:smembers, key], read: true)
end
smove(source, destination, member) click to toggle source

Move a member from one set to another.

@param [String] source source key @param [String] destination destination key @param [String] member member to move from `source` to `destination` @return [Boolean]

# File lib/redis_cluster/function/set.rb, line 123
def smove(source, destination, member)
  call([source, destination],
       [:smove, source, destination, member],
       transform: Redis::Boolify)
end
spop(key, count = nil) click to toggle source

Remove and return one or more random member from a set.

@param [String] key @return [String] @param [Fixnum] count

# File lib/redis_cluster/function/set.rb, line 47
def spop(key, count = nil)
  args = [:spop, key]
  args << count if count

  call(key, args)
end
srandmember(key, count = nil) click to toggle source

Get one or more random members from a set.

@param [String] key @param [Fixnum] count @return [String]

# File lib/redis_cluster/function/set.rb, line 59
def srandmember(key, count = nil)
  args = [:srandmember, key]
  args << count if count

  call(key, args, read: true)
end
srem(key, member) click to toggle source

Remove one or more members from a set.

@param [String] key @param [String, Array<String>] member one member, or array of members @return [Boolean, Fixnum] number of members that were successfully removed

# File lib/redis_cluster/function/set.rb, line 38
def srem(key, member)
  call(key, [:srem, key, member])
end
sunion(*keys) click to toggle source

Add multiple sets.

@param [String, Array<String>] keys keys pointing to sets to unify @return [Array<String>] members in the union

# File lib/redis_cluster/function/set.rb, line 133
def sunion(*keys)
  call(keys, [:sunion] + keys, read: true)
end
sunionstore(destination, *keys) click to toggle source

Add multiple sets and store the resulting set in a key.

@param [String] destination destination key @param [String, Array<String>] keys keys pointing to sets to unify @return [Fixnum] number of elements in the resulting set

# File lib/redis_cluster/function/set.rb, line 142
def sunionstore(destination, *keys)
  call([keys, destination], [:sunionstore, destination] + keys)
end