Skip to content

Instantly share code, notes, and snippets.

@x0bandeira
Last active December 26, 2015 03:49
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save x0bandeira/7088498 to your computer and use it in GitHub Desktop.
Save x0bandeira/7088498 to your computer and use it in GitHub Desktop.
# http://redis.io/commands/rpoplpush
module Resque
def self.move_queue(source, destination)
r = Resque.redis
r.llen("queue:#{source}").times do
r.rpoplpush("queue:#{source}", "queue:#{destination}")
end
end
end
module Resque
def remove_from_queue(queue, match, redis = nil)
redis ||= Resque.redis
key = "queue:#{queue}"
len = redis.llen(key)
offset = 0
(1...len).each do |n|
idx = n - offset
val = redis.lindex(key, idx)
break if val.nil?
next unless val =~ match
redis.lrem(key, 1, val)
offset += 1
end
end
end
# http://redis.io/commands/rpoplpush
module Resque
def self.share_load(source, destination, ratio = 0.5)
r = Resque.redis
(r.llen("queue:#{source}") * ratio).to_i.times do
r.rpoplpush("queue:#{source}", "queue:#{destination}")
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment