class Cacchern::SortedSet
Attributes
key[R]
Public Class Methods
contain_class(klass)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 10 def contain_class(klass) @value_class = klass end
new(key)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 19 def initialize(key) @key = "#{self.class.name.underscore}:#{key}" end
value_class()
click to toggle source
# File lib/cacchern/sorted_set.rb, line 14 def value_class @value_class ||= SortableMember end
Public Instance Methods
add(value)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 49 def add(value) return false unless value.instance_of?(self.class.value_class) if value.valid? Redis.current.zadd @key, value.value, value.key true else false end end
add_all(values)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 60 def add_all(values) values.each { |value| add(value) } end
get(id)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 23 def get(id) score = Redis.current.zscore @key, id return nil if score.nil? self.class.value_class.new(id, score) end
order(direction = :asc)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 37 def order(direction = :asc) values = case direction when :asc Redis.current.zrange @key, 0, -1, withscores: true when :desc Redis.current.zrevrange @key, 0, -1, withscores: true else Redis.current.zrange @key, 0, -1, withscores: true end values.map { |value| self.class.value_class.new(value[0], value[1]) } end
remove(key)
click to toggle source
# File lib/cacchern/sorted_set.rb, line 64 def remove(key) Redis.current.zrem @key, key end
remove_all()
click to toggle source
# File lib/cacchern/sorted_set.rb, line 68 def remove_all Redis.current.del @key end
where_by_score(min: '-inf', max: '+inf')
click to toggle source
# File lib/cacchern/sorted_set.rb, line 30 def where_by_score(min: '-inf', max: '+inf') min = min.to_s if min.is_a? Numeric max = max.to_s if max.is_a? Numeric values = Redis.current.zrangebyscore @key, min, max, withscores: true values.map { |value| self.class.value_class.new(value[0], value[1]) } end