class Punchline::MinQueue
Attributes
key[RW]
Public Class Methods
new(key)
click to toggle source
# File lib/punchline/min_queue.rb, line 8 def initialize(key) @key = key load_scripts! end
Public Instance Methods
all()
click to toggle source
# File lib/punchline/min_queue.rb, line 21 def all redis.zrange(key, 0, -1, with_scores: true).map do |pair| { value: pair.first, priority: pair.last.to_i } end end
clear!()
click to toggle source
# File lib/punchline/min_queue.rb, line 47 def clear! redis.del key end
config()
click to toggle source
# File lib/punchline/min_queue.rb, line 13 def config @config ||= Punchline.config.dup end
dequeue()
click to toggle source
# File lib/punchline/min_queue.rb, line 32 def dequeue value, priority = @dequeue.call [key] { value: value, priority: priority.to_i } unless value.nil? end
enqueue(value, options = {})
click to toggle source
# File lib/punchline/min_queue.rb, line 27 def enqueue(value, options = {}) priority = options[:priority] || Time.now.to_i @enqueue.call([key], [priority, value]) == 1 end
length()
click to toggle source
# File lib/punchline/min_queue.rb, line 17 def length redis.zcard key end
load_scripts!()
click to toggle source
# File lib/punchline/min_queue.rb, line 42 def load_scripts! @enqueue = Script.new redis, 'enqueue.lua' @dequeue = Script.new redis, 'dequeue.lua' end
redis()
click to toggle source
# File lib/punchline/min_queue.rb, line 38 def redis config.redis end
reset_scripts!()
click to toggle source
# File lib/punchline/min_queue.rb, line 51 def reset_scripts! redis.script :flush end