sql >> Databáze >  >> NoSQL >> MongoDB

provádět pouze jednu z mnoha duplicitních úloh pomocí sidekiq?

Můj první návrh by byl mutex pro tuto konkrétní práci. Ale protože existuje šance, že můžete mít více aplikačních serverů pracujících na úlohách sidekiq, navrhoval bych něco na úrovni redis.

Použijte například redis-semaphore v rámci vaší definice pracovníka sidekiq. Nevyzkoušený příklad :

def perform
  s = Redis::Semaphore.new(:map_reduce_semaphore, connection: "localhost")

  # verify that this sidekiq worker is the first to reach this semaphore.
  unless s.locked?

    # auto-unlocks in 90 seconds. set to what is reasonable for your worker.
    s.lock(90)
    your_map_reduce()
    s.unlock
  end
end

def your_map_reduce
  # ...
end


  1. Jak zkontrolovat, zda pole pole obsahuje jedinečnou hodnotu nebo jiné pole v MongoDB?

  2. MongoDB - skupinový složený klíč s vnořenými poli

  3. Vysvětlení možností časového limitu klienta MongoDB

  4. Jak použít C# k vložení dokumentu do existujících vložených dokumentů?