class Sidekiq::JobSet

Public Instance Methods

delete(score, jid)
Alias for: delete_by_jid
delete_by_jid(score, jid) click to toggle source
# File lib/sidekiq/api.rb, line 566
def delete_by_jid(score, jid)
  Sidekiq.redis do |conn|
    elements = conn.zrangebyscore(name, score, score)
    elements.each do |element|
      message = Sidekiq.load_json(element)
      if message["jid"] == jid
        ret = conn.zrem(name, element)
        @_size -= 1 if ret
        break ret
      end
      false
    end
  end
end
Also aliased as: delete
delete_by_value(name, value) click to toggle source
# File lib/sidekiq/api.rb, line 558
def delete_by_value(name, value)
  Sidekiq.redis do |conn|
    ret = conn.zrem(name, value)
    @_size -= 1 if ret
    ret
  end
end
each() { |sorted_entry| ... } click to toggle source
# File lib/sidekiq/api.rb, line 512
def each
  initial_size = @_size
  offset_size = 0
  page = -1
  page_size = 50

  while true do
    range_start = page * page_size + offset_size
    range_end   = range_start + page_size - 1
    elements = Sidekiq.redis do |conn|
      conn.zrange name, range_start, range_end, with_scores: true
    end
    break if elements.empty?
    page -= 1
    elements.each do |element, score|
      yield SortedEntry.new(self, score, element)
    end
    offset_size = initial_size - @_size
  end
end
fetch(score, jid = nil) click to toggle source
# File lib/sidekiq/api.rb, line 533
def fetch(score, jid = nil)
  elements = Sidekiq.redis do |conn|
    conn.zrangebyscore(name, score, score)
  end

  elements.inject([]) do |result, element|
    entry = SortedEntry.new(self, score, element)
    if jid
      result << entry if entry.jid == jid
    else
      result << entry
    end
    result
  end
end
find_job(jid) click to toggle source

Find the job with the given JID within this sorted set.

This is a slow, inefficient operation. Do not use under normal conditions. Sidekiq Pro contains a faster version.

# File lib/sidekiq/api.rb, line 554
def find_job(jid)
  self.detect { |j| j.jid == jid }
end
schedule(timestamp, message) click to toggle source
# File lib/sidekiq/api.rb, line 506
def schedule(timestamp, message)
  Sidekiq.redis do |conn|
    conn.zadd(name, timestamp.to_f.to_s, Sidekiq.dump_json(message))
  end
end