class Sidekiq::JobSet
Public Instance Methods
delete_by_jid(score, jid)
click to toggle source
# File lib/sidekiq/api.rb, line 658 def delete_by_jid(score, jid) Sidekiq.redis do |conn| elements = conn.zrangebyscore(name, score, score) elements.each do |element| if element.index(jid) message = Sidekiq.load_json(element) if message["jid"] == jid ret = conn.zrem(name, element) @_size -= 1 if ret break ret end end end end end
Also aliased as: delete
delete_by_value(name, value)
click to toggle source
# File lib/sidekiq/api.rb, line 650 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 593 def each initial_size = @_size offset_size = 0 page = -1 page_size = 50 loop do range_start = page * page_size + offset_size range_end = range_start + page_size - 1 elements = Sidekiq.redis { |conn| conn.zrange name, range_start, range_end, with_scores: true } break if elements.empty? page -= 1 elements.reverse_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
Fetch jobs that match a given time or Range. Job
ID is an optional second argument.
# File lib/sidekiq/api.rb, line 617 def fetch(score, jid = nil) begin_score, end_score = if score.is_a?(Range) [score.first, score.last] else [score, score] end elements = Sidekiq.redis { |conn| conn.zrangebyscore(name, begin_score, end_score, with_scores: true) } elements.each_with_object([]) do |element, result| data, job_score = element entry = SortedEntry.new(self, job_score, data) result << entry if jid.nil? || entry.jid == jid end end
find_job(jid)
click to toggle source
Find the job with the given JID within this sorted set. This is a slower O(n) operation. Do not use for app logic.
# File lib/sidekiq/api.rb, line 639 def find_job(jid) Sidekiq.redis do |conn| conn.zscan_each(name, match: "*#{jid}*", count: 100) do |entry, score| job = JSON.parse(entry) matched = job["jid"] == jid return SortedEntry.new(self, score, entry) if matched end end nil end
schedule(timestamp, message)
click to toggle source
# File lib/sidekiq/api.rb, line 587 def schedule(timestamp, message) Sidekiq.redis do |conn| conn.zadd(name, timestamp.to_f.to_s, Sidekiq.dump_json(message)) end end