Module: Redis::Commands::Sets
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Included In:
| |
| Defined in: | lib/redis/commands/sets.rb |
Instance Method Summary
-
#sadd(key, *members) ⇒ Integer
Add one or more members to a set.
-
#sadd?(key, *members) ⇒ Boolean
Add one or more members to a set.
-
#saddex(key, *members, mnx: nil, mxx: nil, ex: nil, px: nil, exat: nil, pxat: nil, keepttl: false) ⇒ Integer
Adds one or more members to a set and optionally sets their expiration.
-
#scard(key) ⇒ Integer
Get the number of members in a set.
-
#sdiff(*keys) ⇒ Array<String>
Subtract multiple sets.
-
#sdiffcard(*keys, limit: nil) ⇒ Integer
Get the number of members in the difference between the first set and all successive sets.
-
#sdiffstore(destination, *keys) ⇒ Integer
Subtract multiple sets and store the resulting set in a key.
-
#sexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Setsthe time to live in seconds for one or more set members. -
#sexpireat(key, unix_time_seconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Setsthe expiration for one or more set members as an absolute Unix timestamp in seconds. -
#sexpiretime(key, *members) ⇒ Array<Integer>
Returns the expiration time of one or more set members as an absolute Unix timestamp in seconds.
-
#sinter(*keys) ⇒ Array<String>
Intersect multiple sets.
-
#sintercard(*keys, limit: nil) ⇒ Integer
Get the number of members in the intersection of multiple sets.
-
#sinterstore(destination, *keys) ⇒ Integer
Intersect multiple sets and store the resulting set in a key.
-
#sismember(key, member) ⇒ Boolean
Determine if a given value is a member of a set.
-
#smembers(key) ⇒ Array<String>
Get all the members in a set.
-
#smismember(key, *members) ⇒ Array<Boolean>
Determine if multiple values are members of a set.
-
#smove(source, destination, member) ⇒ Boolean
Move a member from one set to another.
-
#spersist(key, *members) ⇒ Array<Integer>
Removes the expiration from one or more set members, making them persistent.
-
#spexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Setsthe time to live in milliseconds for one or more set members. -
#spexpireat(key, unix_time_milliseconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Setsthe expiration for one or more set members as an absolute Unix timestamp in milliseconds. -
#spexpiretime(key, *members) ⇒ Array<Integer>
Returns the expiration time of one or more set members as an absolute Unix timestamp in milliseconds.
-
#spop(key, count = nil) ⇒ String
Remove and return one or more random member from a set.
-
#spttl(key, *members) ⇒ Array<Integer>
Returns the time to live in milliseconds for one or more set members.
-
#srandmember(key, count = nil) ⇒ String
Get one or more random members from a set.
-
#srem(key, *members) ⇒ Integer
Remove one or more members from a set.
-
#srem?(key, *members) ⇒ Boolean
Remove one or more members from a set.
-
#sscan(key, cursor, **options) ⇒ String+
Scan a set.
-
#sscan_each(key, **options, &block) ⇒ Enumerator
Scan a set.
-
#sttl(key, *members) ⇒ Array<Integer>
Returns the time to live in seconds for one or more set members.
-
#sunion(*keys) ⇒ Array<String>
Add multiple sets.
-
#sunioncard(*keys, approx: false, limit: nil) ⇒ Integer
Get the number of distinct members in the union of multiple sets.
-
#sunionstore(destination, *keys) ⇒ Integer
Add multiple sets and store the resulting set in a key.
Instance Method Details
#sadd(key, *members) ⇒ Integer
Add one or more members to a set.
# File 'lib/redis/commands/sets.rb', line 19
def sadd(key, *members) members.flatten!(1) send_command([:sadd, key].concat(members)) end
#sadd?(key, *members) ⇒ Boolean
Add one or more members to a set.
# File 'lib/redis/commands/sets.rb', line 29
def sadd?(key, *members) members.flatten!(1) send_command([:sadd, key].concat(members), &Boolify) end
#saddex(key, *members, mnx: nil, mxx: nil, ex: nil, px: nil, exat: nil, pxat: nil, keepttl: false) ⇒ Integer
Adds one or more members to a set and optionally sets their expiration.
Without an expiration option, an existing member's TTL is cleared
unless :keepttl is given.
# File 'lib/redis/commands/sets.rb', line 507
def saddex(key, *members, mnx: nil, mxx: nil, ex: nil, px: nil, exat: nil, pxat: nil, keepttl: false) raise ArgumentError, "mnx and mxx are mutually exclusive" if mnx && mxx if [ex, px, exat, pxat, keepttl].count { |option| option } > 1 raise ArgumentError, "ex, px, exat, pxat, and keepttl are mutually exclusive" end members.flatten!(1) args = [:saddex, key] args << "MNX" if mnx args << "MXX" if mxx args << "EX" << Integer(ex) if ex args << "PX" << Integer(px) if px args << "EXAT" << Integer(exat) if exat args << "PXAT" << Integer(pxat) if pxat args << "KEEPTTL" if keepttl args.concat(['MEMBERS', members.length, *members]) send_command(args) end
#scard(key) ⇒ Integer
Get the number of members in a set.
# File 'lib/redis/commands/sets.rb', line 10
def scard(key) send_command([:scard, key]) end
#sdiff(*keys) ⇒ Array<String>
Subtract multiple sets.
# File 'lib/redis/commands/sets.rb', line 123
def sdiff(*keys) keys.flatten!(1) send_command([:sdiff].concat(keys)) end
#sdiffcard(*keys, limit: nil) ⇒ Integer
Get the number of members in the difference between the first set and all successive sets.
# File 'lib/redis/commands/sets.rb', line 151
def sdiffcard(*keys, limit: nil) keys.flatten!(1) args = [:sdiffcard, keys.size].concat(keys) args << "LIMIT" << Integer(limit) if limit send_command(args) end
#sdiffstore(destination, *keys) ⇒ Integer
Subtract multiple sets and store the resulting set in a key.
# File 'lib/redis/commands/sets.rb', line 133
def sdiffstore(destination, *keys) keys.flatten!(1) send_command([:sdiffstore, destination].concat(keys)) end
#sexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Sets the time to live in seconds for one or more set members. An
expired member is removed from the set; a TTL of 0 removes it
immediately.
# File 'lib/redis/commands/sets.rb', line 300
def sexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) members.flatten!(1) args = [:sexpire, key, Integer(ttl)] args.concat(hash_field_expiration_condition(nx, xx, gt, lt)) args.concat(['MEMBERS', members.length, *members]) send_command(args) end
#sexpireat(key, unix_time_seconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Sets the expiration for one or more set members as an absolute Unix
timestamp in seconds. A timestamp in the past removes the member
immediately.
# File 'lib/redis/commands/sets.rb', line 358
def sexpireat(key, unix_time_seconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) members.flatten!(1) args = [:sexpireat, key, Integer(unix_time_seconds)] args.concat(hash_field_expiration_condition(nx, xx, gt, lt)) args.concat(['MEMBERS', members.length, *members]) send_command(args) end
#sexpiretime(key, *members) ⇒ Array<Integer>
Returns the expiration time of one or more set members as an absolute Unix timestamp in seconds.
# File 'lib/redis/commands/sets.rb', line 441
def sexpiretime(key, *members) members.flatten!(1) send_command([:sexpiretime, key, 'MEMBERS', members.length, *members]) end
#sinter(*keys) ⇒ Array<String>
Intersect multiple sets.
# File 'lib/redis/commands/sets.rb', line 162
def sinter(*keys) keys.flatten!(1) send_command([:sinter].concat(keys)) end
#sintercard(*keys, limit: nil) ⇒ Integer
Get the number of members in the intersection of multiple sets.
# File 'lib/redis/commands/sets.rb', line 182
def sintercard(*keys, limit: nil) keys.flatten!(1) args = [:sintercard, keys.size].concat(keys) args << "LIMIT" << Integer(limit) if limit send_command(args) end
#sinterstore(destination, *keys) ⇒ Integer
Intersect multiple sets and store the resulting set in a key.
# File 'lib/redis/commands/sets.rb', line 194
def sinterstore(destination, *keys) keys.flatten!(1) send_command([:sinterstore, destination].concat(keys)) end
#sismember(key, member) ⇒ Boolean
Determine if a given value is a member of a set.
# File 'lib/redis/commands/sets.rb', line 95
def sismember(key, member) send_command([:sismember, key, member], &Boolify) end
#smembers(key) ⇒ Array<String>
Get all the members in a set.
# File 'lib/redis/commands/sets.rb', line 115
def smembers(key) send_command([:smembers, key]) end
#smismember(key, *members) ⇒ Array<Boolean>
Determine if multiple values are members of a set.
# File 'lib/redis/commands/sets.rb', line 104
def smismember(key, *members) members.flatten!(1) send_command([:smismember, key].concat(members)) do |reply| reply.map(&Boolify) end end
#smove(source, destination, member) ⇒ Boolean
Move a member from one set to another.
# File 'lib/redis/commands/sets.rb', line 86
def smove(source, destination, member) send_command([:smove, source, destination, member], &Boolify) end
#spersist(key, *members) ⇒ Array<Integer>
Removes the expiration from one or more set members, making them persistent.
# File 'lib/redis/commands/sets.rb', line 477
def spersist(key, *members) members.flatten!(1) send_command([:spersist, key, 'MEMBERS', members.length, *members]) end
#spexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Sets the time to live in milliseconds for one or more set members. An
expired member is removed from the set; a TTL of 0 removes it
immediately.
# File 'lib/redis/commands/sets.rb', line 329
def spexpire(key, ttl, *members, nx: nil, xx: nil, gt: nil, lt: nil) members.flatten!(1) args = [:spexpire, key, Integer(ttl)] args.concat(hash_field_expiration_condition(nx, xx, gt, lt)) args.concat(['MEMBERS', members.length, *members]) send_command(args) end
#spexpireat(key, unix_time_milliseconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Array<Integer>
Sets the expiration for one or more set members as an absolute Unix
timestamp in milliseconds. A timestamp in the past removes the member
immediately.
# File 'lib/redis/commands/sets.rb', line 387
def spexpireat(key, unix_time_milliseconds, *members, nx: nil, xx: nil, gt: nil, lt: nil) members.flatten!(1) args = [:spexpireat, key, Integer(unix_time_milliseconds)] args.concat(hash_field_expiration_condition(nx, xx, gt, lt)) args.concat(['MEMBERS', members.length, *members]) send_command(args) end
#spexpiretime(key, *members) ⇒ Array<Integer>
Returns the expiration time of one or more set members as an absolute Unix timestamp in milliseconds.
# File 'lib/redis/commands/sets.rb', line 459
def spexpiretime(key, *members) members.flatten!(1) send_command([:spexpiretime, key, 'MEMBERS', members.length, *members]) end
#spop(key, count = nil) ⇒ String
Remove and return one or more random member from a set.
# File 'lib/redis/commands/sets.rb', line 59
def spop(key, count = nil) if count.nil? send_command([:spop, key]) else send_command([:spop, key, Integer(count)]) end end
#spttl(key, *members) ⇒ Array<Integer>
Returns the time to live in milliseconds for one or more set members.
# File 'lib/redis/commands/sets.rb', line 423
def spttl(key, *members) members.flatten!(1) send_command([:spttl, key, 'MEMBERS', members.length, *members]) end
#srandmember(key, count = nil) ⇒ String
Get one or more random members from a set.
# File 'lib/redis/commands/sets.rb', line 72
def srandmember(key, count = nil) if count.nil? send_command([:srandmember, key]) else send_command([:srandmember, key, count]) end end
#srem(key, *members) ⇒ Integer
Remove one or more members from a set.
# File 'lib/redis/commands/sets.rb', line 39
def srem(key, *members) members.flatten!(1) send_command([:srem, key].concat(members)) end
#srem?(key, *members) ⇒ Boolean
Remove one or more members from a set.
# File 'lib/redis/commands/sets.rb', line 49
def srem?(key, *members) members.flatten!(1) send_command([:srem, key].concat(members), &Boolify) end
#sscan(key, cursor, **options) ⇒ String+
[ GitHub ]
# File 'lib/redis/commands/sets.rb', line 252
def sscan(key, cursor, **) _scan(:sscan, cursor, [key], **) end
#sscan_each(key, **options, &block) ⇒ Enumerator
[ GitHub ]
# File 'lib/redis/commands/sets.rb', line 269
def sscan_each(key, **, &block) return to_enum(:sscan_each, key, **) unless block_given? cursor = 0 loop do cursor, keys = sscan(key, cursor, **) keys.each(&block) break if cursor == "0" end end
#sttl(key, *members) ⇒ Array<Integer>
Returns the time to live in seconds for one or more set members.
# File 'lib/redis/commands/sets.rb', line 407
def sttl(key, *members) members.flatten!(1) send_command([:sttl, key, 'MEMBERS', members.length, *members]) end
#sunion(*keys) ⇒ Array<String>
Add multiple sets.
# File 'lib/redis/commands/sets.rb', line 203
def sunion(*keys) keys.flatten!(1) send_command([:sunion].concat(keys)) end
#sunioncard(*keys, approx: false, limit: nil) ⇒ Integer
Get the number of distinct members in the union of multiple sets.
# File 'lib/redis/commands/sets.rb', line 231
def sunioncard(*keys, approx: false, limit: nil) keys.flatten!(1) args = [:sunioncard, keys.size].concat(keys) args << "APPROX" if approx args << "LIMIT" << Integer(limit) if limit send_command(args) end
#sunionstore(destination, *keys) ⇒ Integer
Add multiple sets and store the resulting set in a key.
# File 'lib/redis/commands/sets.rb', line 213
def sunionstore(destination, *keys) keys.flatten!(1) send_command([:sunionstore, destination].concat(keys)) end