Class: RedisSet
- Inherits:
-
Object
show all
- Defined in:
- lib/redis_set.rb
Defined Under Namespace
Classes: InvalidNameException, InvalidRedisConfigException
Constant Summary
collapse
- VERSION =
"0.0.3"
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, redis_or_options = {}) ⇒ RedisSet
Returns a new instance of RedisSet.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/redis_set.rb', line 11
def initialize(name, redis_or_options = {})
name = name.to_s if name.kind_of? Symbol
raise InvalidNameException.new unless name.kind_of?(String) && name.size > 0
@name = name
@redis = if redis_or_options.kind_of?(Redis)
redis_or_options
elsif redis_or_options.kind_of? Hash
::Redis.new redis_or_options
elsif defined?(ActiveSupport::Cache::RedisStore) && redis_or_options.kind_of?(ActiveSupport::Cache::RedisStore)
@pooled = redis_or_options.data.kind_of?(ConnectionPool)
redis_or_options.data
elsif defined?(ConnectionPool) && redis_or_options.kind_of?(ConnectionPool)
@pooled = true
redis_or_options
else
raise InvalidRedisConfigException.new
end
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
4
5
6
|
# File 'lib/redis_set.rb', line 4
def name
@name
end
|
Instance Method Details
#add(*values) ⇒ Object
Also known as:
push
31
32
33
34
|
# File 'lib/redis_set.rb', line 31
def add *values
values = [values].flatten
with{|redis| redis.sadd name, values} if values.size > 0
end
|
#add_with_count(value) ⇒ Object
Also known as:
push_with_count
38
39
40
|
# File 'lib/redis_set.rb', line 38
def add_with_count value
block_on_atomic_attempt { attempt_atomic_add_read_count value }
end
|
#all ⇒ Object
63
64
65
|
# File 'lib/redis_set.rb', line 63
def all
with{|redis| redis.smembers name}
end
|
#clear ⇒ Object
Also known as:
flush
97
98
99
100
|
# File 'lib/redis_set.rb', line 97
def clear
with{|redis| redis.del name}
[]
end
|
#enumerator(slice_size = 10) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/redis_set.rb', line 84
def enumerator(slice_size = 10)
cursor = 0
Enumerator.new do |yielder|
loop do
cursor, items = scan cursor, slice_size
items.each do |item|
yielder << item
end
raise StopIteration if cursor.to_i.zero?
end
end
end
|
#expire(seconds) ⇒ Object
104
105
106
|
# File 'lib/redis_set.rb', line 104
def expire seconds
with{|redis| redis.expire name, seconds}
end
|
#include?(value) ⇒ Boolean
53
54
55
|
# File 'lib/redis_set.rb', line 53
def include? value
with{|redis| redis.sismember(name, value)}
end
|
#intersection(*sets) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/redis_set.rb', line 67
def intersection *sets
sets = [sets].flatten
sets = sets.map do |s|
if s.kind_of?(self.class)
s.name
else
s
end
end
with{|redis| redis.sinter *sets }
end
|
#pop(amount = 1) ⇒ Object
49
50
51
|
# File 'lib/redis_set.rb', line 49
def pop(amount = 1)
with{|redis| redis.spop name, amount}
end
|
#remove(*values) ⇒ Object
44
45
46
47
|
# File 'lib/redis_set.rb', line 44
def remove *values
values = [values].flatten
with{|redis|redis.srem name, values} if values.size > 0
end
|
#scan(cursor = 0, amount = 10, match = "*") ⇒ Object
80
81
82
|
# File 'lib/redis_set.rb', line 80
def scan cursor = 0, amount = 10, match = "*"
with{|redis| redis.sscan name, cursor, :count => amount, :match => match}
end
|
#size ⇒ Object
Also known as:
count
57
58
59
|
# File 'lib/redis_set.rb', line 57
def size
with{|redis| redis.scard name}
end
|