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おそらくその 1 つです。

キーの名前を変更できる場所

このようなことをする

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 に答える