Class: Familia::Set
Instance Attribute Summary
Attributes inherited from RedisType
#dump_method, #keystring, #load_method, #opts, #parent
Attributes included from Features
#features_enabled
Instance Method Summary
collapse
Methods inherited from RedisType
#class?, #db, #initialize, #parent?, #parent_class?, #parent_instance?, #redis, #rediskey, #uri
Methods included from Features
#feature
#db, #has_relations?, #inherited, #register, #uri, #valid_keys_only
#deserialize_value, #deserialize_values, #deserialize_values_with_nil, #serialize_value
#delete!, #echo, #exists?, #expire, #expireat, #persist, #realttl, #rename, #renamenx, #type
Methods included from Base
add_feature, #generate_id, #update_expiration, #uuid
Instance Method Details
#<<(v) ⇒ Object
23
24
25
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 23
def <<(v)
add v
end
|
#add(*values) ⇒ Object
17
18
19
20
21
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 17
def add *values
values.flatten.compact.each { |v| redis.sadd? rediskey, serialize_value(v) }
update_expiration
self
end
|
#collect(&blk) ⇒ Object
47
48
49
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 47
def collect(&blk)
members.collect(&blk)
end
|
#collectraw(&blk) ⇒ Object
63
64
65
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 63
def collectraw(&blk)
membersraw.collect(&blk)
end
|
#each(&blk) ⇒ Object
39
40
41
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 39
def each(&blk)
members.each(&blk)
end
|
#each_with_index(&blk) ⇒ Object
43
44
45
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 43
def each_with_index(&blk)
members.each_with_index(&blk)
end
|
#eachraw(&blk) ⇒ Object
55
56
57
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 55
def eachraw(&blk)
membersraw.each(&blk)
end
|
#eachraw_with_index(&blk) ⇒ Object
59
60
61
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 59
def eachraw_with_index(&blk)
membersraw.each_with_index(&blk)
end
|
#element_count ⇒ Integer
Also known as:
size
Returns the number of elements in the unsorted set
8
9
10
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 8
def element_count
redis.scard rediskey
end
|
#empty? ⇒ Boolean
13
14
15
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 13
def empty?
element_count.zero?
end
|
#intersection(*setkeys) ⇒ Object
84
85
86
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 84
def intersection *setkeys
end
|
#member?(val) ⇒ Boolean
Also known as:
include?
71
72
73
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 71
def member?(val)
redis.sismember rediskey, serialize_value(val)
end
|
#members ⇒ Object
Also known as:
all, to_a
27
28
29
30
31
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 27
def members
echo :members, caller(1..1).first if Familia.debug
elements = membersraw
deserialize_values(*elements)
end
|
#membersraw ⇒ Object
35
36
37
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 35
def membersraw
redis.smembers(rediskey)
end
|
#move(dstkey, val) ⇒ Object
92
93
94
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 92
def move(dstkey, val)
redis.smove rediskey, dstkey, val
end
|
#pop ⇒ Object
88
89
90
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 88
def pop
redis.spop rediskey
end
|
#random ⇒ Object
96
97
98
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 96
def random
deserialize_value randomraw
end
|
#randomraw ⇒ Object
100
101
102
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 100
def randomraw
redis.srandmember(rediskey)
end
|
#remove_element(value) ⇒ Integer
Also known as:
remove
Removes a member from the set
79
80
81
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 79
def remove_element(value)
redis.srem rediskey, serialize_value(value)
end
|
#select(&blk) ⇒ Object
51
52
53
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 51
def select(&blk)
members.select(&blk)
end
|
#selectraw(&blk) ⇒ Object
67
68
69
|
# File 'lib/familia/redistype/types/unsorted_set.rb', line 67
def selectraw(&blk)
membersraw.select(&blk)
end
|
#self ⇒ Object
Make the value stored at KEY identical to the given list define_method :“#name_sync” do |*latest|
latest = latest.flatten.compact
if latest.empty?
false
else
latest = latest.collect { |obj| obj.index } if klass === latest.first
current = send("#{name_plural}raw")
added = latest-current
removed = current-latest
added.each { |v| self.send("add_#{name_singular}", v) }
removed.each { |v| self.send("remove_#{name_singular}", v) }
true
end
end