class Sweatpants::RedisQueue

Attributes

redis[R]

Public Class Methods

new(params = {}) click to toggle source
# File lib/sweatpants/queue.rb, line 27
def initialize params = {}
  @list_name = params[:list]
  @redis = Redis.new(host: params[:host], port: params[:port])
  @redis.select params[:database]
end

Public Instance Methods

dequeue(count=nil) click to toggle source
# File lib/sweatpants/queue.rb, line 37
def dequeue count=nil
  count = @redis.llen(@list_name) unless count
  multi_pop count
end
enqueue(request) click to toggle source
# File lib/sweatpants/queue.rb, line 33
def enqueue request
  @redis.rpush @list_name, request.to_json
end
flushall() click to toggle source
# File lib/sweatpants/queue.rb, line 50
def flushall
  @redis.flushall
end
multi_pop(count) click to toggle source
# File lib/sweatpants/queue.rb, line 42
def multi_pop count
  items = @redis.multi {
    peek count
    @redis.ltrim(@list_name, count, -1)
  }[0]
  items
end
peek(count = nil) click to toggle source
# File lib/sweatpants/queue.rb, line 54
def peek count = nil
  count = @redis.llen(@list_name) unless count
  @redis.lrange(@list_name, 0, count - 1)
end