6

我正在尝试将 Resque 队列转换为 Sidekiq。我已经完成了 Sidekiq 的整个设置,现在准备将我所有的 resque 作业添加到 sidekiq 的作业中。

我的问题是:我可以简单地将redis中的所有resque键重命名为相应的sidekiq键吗?

例如,如果我有一个名为“twitter”的队列,resque 的 redis 键是“resque:queue:twitter”,但 sidekiq 中的键是“queue:twitter”。我可以简单地将“resque:queue:twitter”重命名为“queue:twitter”吗?

4

2 回答 2

6

好的 终于明白了

我错过的全局命令很少,rename也许就是其中之一。

你可以在哪里重命名键如果你想

做这样的事情

redis.rename "resque:queue:twitter","queue:twitter" 

看看它是否有效

干杯

感谢提问 刚刚被redis知识刷了一遍

于 2012-12-17T12:59:00.973 回答
1

这是我用来将现有的 resque 作业迁移到 sidekiq 的一些代码。您可以在 rails 控制台中使用它。

['low', 'high', 'critical'].each do |queue|
  p [1, queue]
  old_queue = "resque:queue:#{queue}"
  new_queue = "queue:#{queue}"
  # $redis.ltrim new_queue, 0, 0 # can optionally clear out new queue, in case of multiple runs

  vals = $redis.lrange(old_queue, 0, -1)
  p [2, queue]
  $redis.pipelined do
    vals.each do |val|
      $redis.lpush(new_queue, val)
    end
  end
end

您也可以只设置:

Sidekiq.configure_server do |config|
  config.redis = { :namespace => 'resque' }
end
Sidekiq.configure_client do |config|
  config.redis = { :namespace => 'resque' }
end

它开箱即用。但是在我没有这个部署之后,我有两种格式的待处理作业,所以不得不使用我粘贴的第一个代码来迁移东西。

于 2013-08-29T04:40:16.327 回答