sql >> Databasteknik >  >> NoSQL >> Redis

Avbryt jobb i Laravel

Det finns inget direkt eller enkelt sätt att göra det på. De försenade jobben sparas i sorted sets lika bearbetningstid som score och jobbnyttolast som value .

Det finns flera sätt att ta bort ett element från de sorterade uppsättningarna (de flesta av dem kräver vissa ansträngningar beroende på storleken på den försenade kön) som t.ex.

  • Du får den "exakta" nyttolasten för det skickade jobbet och använder sedan ZREM för att ta bort det. Det är svårt eftersom objektet (serialiserad version av jobbet med alla parametrar) kan vara enormt och du kan inte skapa det "exakta" jobbet eftersom det har en unik identifierare. Du kan få listan över det med ZRANGEBYSCORE och med WITHSCORES . Det kommer att ge dig en lista över jobb med deras poäng. Du kan använda poäng för att identifiera ett försenat jobb. Hämta värdet (serialiserad nyttolast) och använd sedan ZREM .
  • Om det bara finns ett jobb som ska bearbetas vid en viss tidpunkt kan du använda ZREMRANGEBYSCORE med att använda den bearbetade tiden. Om det finns n jobb som ska behandlas exakt den tiden kan andra jobb också tas bort eftersom ZREMRANGEBYSCORE tar tidsintervall.
  • Du kan försöka använda ZSCAN för att skanna hela den fördröjda listan (med sidnumrering) och hitta poängen och identifieraren för jobbet, och sedan använda ZREMRANGEBYLEX med identifieraren för att ta bort det.
  • Ett annat sätt kan vara att sätta ett avbokningsvillkor i början av handle metod. Den här kräver utveckling av applikationslager. När du skickar ett jobb till kön skickar du en identifierare till jobbet, lägg in samma identifierare (som du kan förstå) i Redis också (med EXPIRE längre än den fördröjda tiden). När du vill avbryta det, radera det från Redis. Inuti handtagsmetoden kontrollera om den givna identifieraren finns i Redis, om inte tidig retur från kodblocket.



  1. En utvecklarguide till MongoDB Replica Sets

  2. mongodb misslyckades:fel vid anslutning till db-server:inga servrar som kan nås

  3. Hur man skapar ett index med ett specifikt namn i MongoDB

  4. Mongodb summerar storleken på arrayfält