Class: Familia::UnsortedSet
- Defined in:
- lib/familia/data_type/types/unsorted_set.rb
Overview
Familia::UnsortedSet
Instance Attribute Summary collapse
-
#features_enabled ⇒ Object
included
from Features
readonly
Returns the value of attribute features_enabled.
- #logical_database(val = nil) ⇒ Object included from DataType::ClassMethods
-
#parent ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute parent.
-
#prefix ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute prefix.
-
#suffix ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute suffix.
-
#uri(val = nil) ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute uri.
Attributes included from Settings
#current_key_version, #default_expiration, #delim, #encryption_keys, #encryption_personalization, #logical_database, #prefix, #suffix, #transaction_mode
Instance Method Summary collapse
- #<<(v) ⇒ Object
- #add(*values) ⇒ Object (also: #add_element)
- #collect ⇒ Object
- #collectraw ⇒ Object
-
#difference(*other_sets) ⇒ Array
(also: #diff)
Returns the difference of this set minus one or more other sets.
-
#diffstore(destination, *other_sets) ⇒ Integer
(also: #difference_store)
Stores the difference of this set minus other sets into a destination key.
- #each ⇒ Object
- #each_with_index ⇒ Object
- #eachraw ⇒ Object
- #eachraw_with_index ⇒ Object
-
#element_count ⇒ Integer
(also: #size, #length, #count)
Returns the number of elements in the unsorted set.
- #empty? ⇒ Boolean
-
#intercard(*other_sets, limit: 0) ⇒ Integer
(also: #intersection_cardinality)
Returns the cardinality of the intersection without retrieving members.
-
#intersection(*other_sets) ⇒ Array
(also: #inter)
Returns the intersection of this set with one or more other sets.
-
#interstore(destination, *other_sets) ⇒ Integer
(also: #intersection_store)
Stores the intersection of this set with other sets into a destination key.
- #member?(val) ⇒ Boolean (also: #include?)
-
#member_any?(*values) ⇒ Array<Boolean>
(also: #members?)
Checks membership for multiple values at once.
- #members ⇒ Object (also: #all, #to_a)
- #membersraw ⇒ Object
- #move(dstkey, val) ⇒ Object
- #pop ⇒ Object
-
#remove_element(value) ⇒ Integer
(also: #remove)
Removes a member from the set.
-
#sample(count = 1) ⇒ Array
Get one or more random members from the set.
-
#sampleraw(count = 1) ⇒ Array
(also: #random)
Get one or more random members from the set without deserialization.
-
#scan(cursor = 0, match: nil, count: nil) ⇒ Array<Integer, Array>
Iterates over set members using cursor-based iteration.
- #select ⇒ Object
- #selectraw ⇒ Object
-
#union(*other_sets) ⇒ Array
Returns the union of this set with one or more other sets.
-
#unionstore(destination, *other_sets) ⇒ Integer
(also: #union_store)
Stores the union of this set with other sets into a destination key.
Methods included from Features::Autoloader
autoload_files, included, normalize_to_config_name
Methods included from DataType::Serialization
#deserialize_value, #deserialize_values, #deserialize_values_with_nil, #serialize_value
Methods included from DataType::DatabaseCommands
#current_expiration, #delete!, #echo, #exists?, #expire, #expireat, #persist, #rename, #renamenx, #type
Methods included from DataType::Connection
#dbclient, #dbkey, #direct_access, #uri
Methods included from Connection::Behavior
#connect, #create_dbclient, #multi, #normalize_uri, #pipeline, #pipelined, #transaction, #uri=, #url, #url=
Methods included from Settings
#configure, #default_suffix, #pipelined_mode, #pipelined_mode=
Methods included from Base
add_feature, #as_json, #expired?, #expires?, find_feature, #generate_id, #to_json, #to_s, #ttl, #update_expiration, #uuid
Constructor Details
This class inherits a constructor from Familia::DataType
Instance Attribute Details
#features_enabled ⇒ Object (readonly) Originally defined in module Features
Returns the value of attribute features_enabled.
#logical_database(val = nil) ⇒ Object Originally defined in module DataType::ClassMethods
#parent ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute parent.
#prefix ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute prefix.
#suffix ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute suffix.
#uri(val = nil) ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute uri.
Instance Method Details
#<<(v) ⇒ Object
29 30 31 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 29 def <<(v) add v end |
#add(*values) ⇒ Object Also known as: add_element
22 23 24 25 26 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 22 def add *values values.flatten.compact.each { |v| dbclient.sadd? dbkey, serialize_value(v) } update_expiration self end |
#collect ⇒ Object
53 54 55 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 53 def collect(&) members.collect(&) end |
#collectraw ⇒ Object
69 70 71 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 69 def collectraw(&) membersraw.collect(&) end |
#difference(*other_sets) ⇒ Array Also known as: diff
Returns the difference of this set minus one or more other sets.
112 113 114 115 116 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 112 def difference(*other_sets) keys = extract_keys(other_sets) elements = dbclient.sdiff(dbkey, *keys) deserialize_values(*elements) end |
#diffstore(destination, *other_sets) ⇒ Integer Also known as: difference_store
Stores the difference of this set minus other sets into a destination key.
189 190 191 192 193 194 195 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 189 def diffstore(destination, *other_sets) dest_key = extract_key(destination) keys = extract_keys(other_sets) result = dbclient.sdiffstore(dest_key, dbkey, *keys) update_expiration result end |
#each ⇒ Object
45 46 47 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 45 def each(&) members.each(&) end |
#each_with_index ⇒ Object
49 50 51 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 49 def each_with_index(&) members.each_with_index(&) end |
#eachraw ⇒ Object
61 62 63 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 61 def eachraw(&) membersraw.each(&) end |
#eachraw_with_index ⇒ Object
65 66 67 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 65 def eachraw_with_index(&) membersraw.each_with_index(&) end |
#element_count ⇒ Integer Also known as: size, length, count
Returns the number of elements in the unsorted set
11 12 13 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 11 def element_count dbclient.scard dbkey end |
#empty? ⇒ Boolean
18 19 20 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 18 def empty? element_count.zero? end |
#intercard(*other_sets, limit: 0) ⇒ Integer Also known as: intersection_cardinality
Returns the cardinality of the intersection without retrieving members. More memory-efficient than intersection when only the count is needed.
148 149 150 151 152 153 154 155 156 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 148 def intercard(*other_sets, limit: 0) keys = extract_keys(other_sets) all_keys = [dbkey, *keys] if limit.positive? dbclient.sintercard(all_keys.size, *all_keys, limit: limit) else dbclient.sintercard(all_keys.size, *all_keys) end end |
#intersection(*other_sets) ⇒ Array Also known as: inter
Returns the intersection of this set with one or more other sets.
93 94 95 96 97 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 93 def intersection(*other_sets) keys = extract_keys(other_sets) elements = dbclient.sinter(dbkey, *keys) deserialize_values(*elements) end |
#interstore(destination, *other_sets) ⇒ Integer Also known as: intersection_store
Stores the intersection of this set with other sets into a destination key.
163 164 165 166 167 168 169 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 163 def interstore(destination, *other_sets) dest_key = extract_key(destination) keys = extract_keys(other_sets) result = dbclient.sinterstore(dest_key, dbkey, *keys) update_expiration result end |
#member?(val) ⇒ Boolean Also known as: include?
77 78 79 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 77 def member?(val) dbclient.sismember dbkey, serialize_value(val) end |
#member_any?(*values) ⇒ Array<Boolean> Also known as: members?
Checks membership for multiple values at once.
122 123 124 125 126 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 122 def member_any?(*values) values = values.flatten serialized = values.map { |v| serialize_value(v) } dbclient.smismember(dbkey, *serialized) end |
#members ⇒ Object Also known as: all, to_a
33 34 35 36 37 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 33 def members echo :members, Familia.pretty_stack(limit: 1) if Familia.debug elements = membersraw deserialize_values(*elements) end |
#membersraw ⇒ Object
41 42 43 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 41 def membersraw dbclient.smembers(dbkey) end |
#move(dstkey, val) ⇒ Object
202 203 204 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 202 def move(dstkey, val) dbclient.smove dbkey, dstkey, val end |
#pop ⇒ Object
198 199 200 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 198 def pop dbclient.spop dbkey end |
#remove_element(value) ⇒ Integer Also known as: remove
Removes a member from the set
85 86 87 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 85 def remove_element(value) dbclient.srem dbkey, serialize_value(value) end |
#sample(count = 1) ⇒ Array
Get one or more random members from the set
209 210 211 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 209 def sample(count = 1) deserialize_values(*sampleraw(count)) end |
#sampleraw(count = 1) ⇒ Array Also known as: random
Get one or more random members from the set without deserialization
217 218 219 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 217 def sampleraw(count = 1) dbclient.srandmember(dbkey, count) || [] end |
#scan(cursor = 0, match: nil, count: nil) ⇒ Array<Integer, Array>
Iterates over set members using cursor-based iteration.
134 135 136 137 138 139 140 141 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 134 def scan(cursor = 0, match: nil, count: nil) opts = {} opts[:match] = match if match opts[:count] = count if count new_cursor, elements = dbclient.sscan(dbkey, cursor, **opts) [new_cursor.to_i, deserialize_values(*elements)] end |
#select ⇒ Object
57 58 59 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 57 def select(&) members.select(&) end |
#selectraw ⇒ Object
73 74 75 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 73 def selectraw(&) membersraw.select(&) end |
#union(*other_sets) ⇒ Array
Returns the union of this set with one or more other sets.
103 104 105 106 107 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 103 def union(*other_sets) keys = extract_keys(other_sets) elements = dbclient.sunion(dbkey, *keys) deserialize_values(*elements) end |
#unionstore(destination, *other_sets) ⇒ Integer Also known as: union_store
Stores the union of this set with other sets into a destination key.
176 177 178 179 180 181 182 |
# File 'lib/familia/data_type/types/unsorted_set.rb', line 176 def unionstore(destination, *other_sets) dest_key = extract_key(destination) keys = extract_keys(other_sets) result = dbclient.sunionstore(dest_key, dbkey, *keys) update_expiration result end |