Class: RedisRds::Set
- Inherits:
-
Object
show all
- Includes:
- Enumerable
- Defined in:
- lib/redis_rds/set.rb
Instance Attribute Summary
Attributes inherited from Object
#redis_key
Instance Method Summary
collapse
Methods inherited from Object
configure, #connection, connection, #delete, #dump, #exists?, #expire, #expireat, flushdb, #initialize, #namespace, #persist, #pttl, #ttl, #type
Instance Method Details
#add(item) ⇒ Object
Also known as:
<<, push
5
6
7
|
# File 'lib/redis_rds/set.rb', line 5
def add(item)
return connection.sadd(@redis_key, item)
end
|
28
29
30
|
# File 'lib/redis_rds/set.rb', line 28
def all
return ::Set.new(connection.smembers(@redis_key)).to_a
end
|
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/redis_rds/set.rb', line 32
def consume
lua_script = "
local result = redis.call('smembers', KEYS[1]);
redis.call('del', KEYS[1]);
return result;"
result = connection.eval(lua_script, [@redis_key])
result = [] if result.blank?
return ::Set.new(Array.wrap(result).compact).to_a
end
|
#each(&block) ⇒ Object
TODO: Implement lazy enumerator
56
57
58
|
# File 'lib/redis_rds/set.rb', line 56
def each(&block)
return all.each(&block)
end
|
#include?(object) ⇒ Boolean
47
48
49
|
# File 'lib/redis_rds/set.rb', line 47
def include?(object)
return connection.sismember(@redis_key, object)
end
|
#merge(enumerable) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/redis_rds/set.rb', line 11
def merge(enumerable)
lua_script = "
local result = 0;
for i, item in ipairs(ARGV) do
result = result + redis.call('sadd', KEYS[1], item);
end
return result;"
result = connection.eval(lua_script, [@redis_key], enumerable.entries)
result = [] if result.blank?
return result
end
|
#remove(item) ⇒ Object
24
25
26
|
# File 'lib/redis_rds/set.rb', line 24
def remove(item)
return connection.srem(@redis_key, item)
end
|
43
44
45
|
# File 'lib/redis_rds/set.rb', line 43
def size
return connection.scard(@redis_key)
end
|
51
52
53
|
# File 'lib/redis_rds/set.rb', line 51
def to_json
return all.to_json
end
|