Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Anuluj oferty pracy w Laravel

Nie ma na to bezpośredniego ani łatwego sposobu. Opóźnione zadania są przechowywane w sorted sets jako czas do przetworzenia jako score i ładunek zadania jako value .

Istnieje kilka sposobów na usunięcie elementu z posortowanych zestawów (większość z nich wymaga pewnego wysiłku w zależności od rozmiaru opóźnionej kolejki), takich jak

  • Otrzymujesz „dokładny” ładunek wysłanego zadania, a następnie używasz ZREM, aby je usunąć. Jest to trudne, ponieważ obiekt (serializowana wersja zadania ze wszystkimi parametrami) może być ogromny i nie można utworzyć "dokładnego" zadania, ponieważ ma unikalny identyfikator. Możesz uzyskać ich listę za pomocą ZRANGEBYSCORE i WITHSCORES . Otrzymasz listę zadań wraz z ich wynikami. Możesz użyć wyniku, aby zidentyfikować opóźnioną pracę. Pobierz wartość (serializowany ładunek), a następnie użyj ZREM .
  • Jeśli jest tylko jedno zadanie do przetworzenia w określonym czasie, możesz użyć ZREMRANGEBYSCORE z wykorzystaniem czasu przetwarzania. Jeśli jest n zadań do przetworzenia dokładnie w tym czasie, inne zadania również mogą zostać usunięte od czasu ZREMRANGEBYSCORE zajmuje przedział czasu.
  • Możesz spróbować użyć ZSCAN, aby przeskanować całą listę opóźnionych (z podziałem na strony) i znaleźć wynik oraz identyfikator zadania, a następnie użyć ZREMRANGEBYLEX z identyfikatorem, aby je usunąć.
  • Innym sposobem może być umieszczenie warunku anulowania na początku handle metoda. Ten wymaga opracowania warstwy aplikacji. Za każdym razem, gdy wysyłasz zadanie do kolejki, wysyłasz identyfikator do zadania, umieść ten sam identyfikator (który możesz zrozumieć) również w Redis (z EXPIRE większa niż czas opóźnienia). Jeśli chcesz go anulować, usuń go z Redis. Wewnątrz metody uchwytu sprawdź, czy podany identyfikator istnieje w Redis, jeśli nie wcześniej, wróć z bloku kodu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Okno stosu nie pokazuje żadnych danych wyjściowych podczas debugowania skryptów Redis Lua za pomocą ZeroBrane

  2. Konwencje nazewnictwa kluczy Redis?

  3. Jak wdrożyć node.js z redis na Kubernetes?

  4. Przechowywanie skrótu MessagePacked w Redis

  5. Anulować już wykonywane zadanie w Pythonie RQ?