Module: RedisCluster::Function::Set

Included in:
RedisCluster::Function
Defined in:
lib/redis_cluster/function/set.rb

Overview

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]

Instance Method Summary collapse

Instance Method Details

#sadd(key, member) ⇒ Fixnum

Add one or more members to a set.

Parameters:

Returns:

  • (Fixnum)

    number of members that were successfully added



29
30
31
# File 'lib/redis_cluster/function/set.rb', line 29

def sadd(key, member)
  call(key, [:sadd, key, member])
end

#scard(key) ⇒ Fixnum

Get the number of members in a set.

Parameters:

Returns:

  • (Fixnum)


20
21
22
# File 'lib/redis_cluster/function/set.rb', line 20

def scard(key)
  call(key, [:scard, key], read: true)
end

#sdiff(*keys) ⇒ Array<String>

Subtract multiple sets.

Parameters:

  • keys (String, Array<String>)

    keys pointing to sets to subtract

Returns:

  • (Array<String>)

    members in the difference



87
88
89
# File 'lib/redis_cluster/function/set.rb', line 87

def sdiff(*keys)
  call(keys, [:sdiff] + keys, read: true)
end

#sdiffstore(destination, *keys) ⇒ Fixnum

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

Parameters:

  • destination (String)

    destination key

  • keys (String, Array<String>)

    keys pointing to sets to subtract

Returns:

  • (Fixnum)

    number of elements in the resulting set



96
97
98
# File 'lib/redis_cluster/function/set.rb', line 96

def sdiffstore(destination, *keys)
  call([keys, destination], [:sdiffstore, destination] + keys)
end

#sinter(*keys) ⇒ Array<String>

Intersect multiple sets.

Parameters:

  • keys (String, Array<String>)

    keys pointing to sets to intersect

Returns:

  • (Array<String>)

    members in the intersection



104
105
106
# File 'lib/redis_cluster/function/set.rb', line 104

def sinter(*keys)
  call(keys, [:sinter] + keys, read: true)
end

#sinterstore(destination, *keys) ⇒ Fixnum

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

Parameters:

  • destination (String)

    destination key

  • keys (String, Array<String>)

    keys pointing to sets to intersect

Returns:

  • (Fixnum)

    number of elements in the resulting set



113
114
115
# File 'lib/redis_cluster/function/set.rb', line 113

def sinterstore(destination, *keys)
  call([keys, destination], [:sinterstore, destination] + keys)
end

#sismember(key, member) ⇒ Boolean

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

Parameters:

Returns:

  • (Boolean)


71
72
73
# 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) ⇒ Array<String>

Get all the members in a set.

Parameters:

Returns:



79
80
81
# File 'lib/redis_cluster/function/set.rb', line 79

def smembers(key)
  call(key, [:smembers, key], read: true)
end

#smove(source, destination, member) ⇒ Boolean

Move a member from one set to another.

Parameters:

  • source (String)

    source key

  • destination (String)

    destination key

  • member (String)

    member to move from ‘source` to `destination`

Returns:

  • (Boolean)


123
124
125
126
127
# 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) ⇒ String

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

Parameters:

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

Returns:



47
48
49
50
51
52
# 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) ⇒ String

Get one or more random members from a set.

Parameters:

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

Returns:



59
60
61
62
63
64
# 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) ⇒ Boolean, Fixnum

Remove one or more members from a set.

Parameters:

Returns:

  • (Boolean, Fixnum)

    number of members that were successfully removed



38
39
40
# File 'lib/redis_cluster/function/set.rb', line 38

def srem(key, member)
  call(key, [:srem, key, member])
end

#sunion(*keys) ⇒ Array<String>

Add multiple sets.

Parameters:

  • keys (String, Array<String>)

    keys pointing to sets to unify

Returns:

  • (Array<String>)

    members in the union



133
134
135
# File 'lib/redis_cluster/function/set.rb', line 133

def sunion(*keys)
  call(keys, [:sunion] + keys, read: true)
end

#sunionstore(destination, *keys) ⇒ Fixnum

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

Parameters:

  • destination (String)

    destination key

  • keys (String, Array<String>)

    keys pointing to sets to unify

Returns:

  • (Fixnum)

    number of elements in the resulting set



142
143
144
# File 'lib/redis_cluster/function/set.rb', line 142

def sunionstore(destination, *keys)
  call([keys, destination], [:sunionstore, destination] + keys)
end