class Derrick::Collector

Public Class Methods

new(redis, queue, progress, context) click to toggle source
# File lib/derrick/collector.rb, line 3
def initialize(redis, queue, progress, context)
  @redis = redis
  @queue = queue
  @progress = progress
  @context = context
end

Public Instance Methods

collect_keys() click to toggle source
# File lib/derrick/collector.rb, line 15
def collect_keys
  cursor = '0'
  loop do
    cursor, keys = @redis.scan(cursor, count: @context.batch_size)
    @queue.push(keys)
    @progress.increment_collected(keys.size)
    return if cursor == '0'
  end
end
run() click to toggle source
# File lib/derrick/collector.rb, line 10
def run
  collect_keys
  @context.concurrency.times { @queue.push(:stop) }
end