sql >> Databáze >  >> NoSQL >> Redis

Zrušit zaměstnání v Laravel

Neexistuje žádný přímý nebo snadný způsob, jak to udělat. Zpožděné úlohy jsou uchovávány v sorted sets jako čas zpracování jako score a užitečné zatížení úlohy jako value .

Existuje několik způsobů, jak odstranit prvek ze setříděných sad (většina z nich vyžaduje určité úsilí v závislosti na velikosti zpožděné fronty), například

  • Získáte „přesné“ užitečné zatížení odeslané úlohy a poté ji pomocí ZREM odstraníte. Je to těžké, protože objekt (serializovaná verze úlohy se všemi parametry) může být obrovský a nemůžete vytvořit „přesnou“ úlohu, protože má jedinečný identifikátor. Jeho seznam můžete získat pomocí ZRANGEBYSCORE a pomocí WITHSCORES . Poskytne vám seznam úloh s jejich skóre. Skóre můžete použít k identifikaci zpožděné úlohy. Získejte hodnotu (serializované užitečné zatížení) a poté použijte ZREM .
  • Pokud existuje pouze jedna úloha ke zpracování v určitý čas, můžete použít ZREMRANGEBYSCORE s využitím zpracovaného času. Pokud existuje n úloh, které mají být zpracovány přesně v tu dobu, mohou být smazány i jiné úlohy, protože ZREMRANGEBYSCORE trvá časový interval.
  • Můžete se pokusit pomocí ZSCAN naskenovat celý zpožděný seznam (s stránkováním) a najít skóre a identifikátor úlohy a poté použít ZREMRANGEBYLEX s identifikátorem k jeho odstranění.
  • Dalším způsobem může být umístění podmínky zrušení na začátek handle metoda. Toto vyžaduje vývoj aplikační vrstvy. Kdykoli vložíte úlohu do fronty, pošlete do úlohy identifikátor, vložte stejný identifikátor (kterému rozumíte) také do Redis (s EXPIRE delší než doba zpoždění). Pokud jej chcete zrušit, odstraňte jej z Redis. Uvnitř metody handle zkontrolujte, zda daný identifikátor v Redis existuje, ne-li předčasný návrat z bloku kódu.



  1. Flask - Bad Request Prohlížeč (nebo proxy) odeslal požadavek, kterému tento server nerozuměl

  2. Redis set vs hash

  3. Doplňte chybějící data do záznamů

  4. Odlišný příkaz MongoDB