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