Redis
 sql >> база данни >  >> NoSQL >> Redis

Отмяна на работни места в Laravel

Няма директен или лесен начин да го направите. Забавените задания се съхраняват в sorted sets като време за обработка като score и полезен товар на заданието като value .

Има няколко начина за премахване на елемент от сортираните набори (повечето от тях изискват известни усилия в зависимост от размера на забавената опашка), като

  • Получавате „точния“ полезен товар на изпратеното задание и след това използвате ZREM, за да го премахнете. Трудно е, защото обектът (сериализирана версия на заданието с всички параметри) може да бъде огромен и не можете да създадете "точното" задание, защото има уникален идентификатор. Можете да получите списъка с него със ZRANGEBYSCORE и с WITHSCORES . Ще ви даде списък с работни места с техните резултати. Можете да използвате оценка, за да идентифицирате забавената работа. Вземете стойността (сериализиран полезен товар), след което използвайте ZREM .
  • Ако има само едно задание, което трябва да бъде обработено в определено време, можете да използвате ZREMRANGEBYSCORE с използване на обработеното време. Ако има n задания, които трябва да бъдат обработени точно по това време, други задачи също могат да бъдат изтрити, тъй като ZREMRANGEBYSCORE отнема времеви интервал.
  • Можете да опитате да използвате ZSCAN, за да сканирате целия отложен списък (с пагинация) и да намерите резултата и идентификатора на заданието, след което да използвате ZREMRANGEBYLEX с идентификатора, за да го премахнете.
  • Друг начин може да бъде поставянето на условие за анулиране в началото на handle метод. Това изисква развитие на приложния слой. Всеки път, когато натискате задание в опашката, изпращате идентификатор към заданието, поставете същия идентификатор (който можете да разберете) и в Redis (с EXPIRE по-голямо от времето на закъснение). Когато искате да го отмените, след това го изтрийте от Redis. Вътре в метода манипулатор проверете дали даденият идентификатор съществува в Redis, ако не и ранно връщане от кодовия блок.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis/Jedis няма единична точка на отказ и автоматично преминаване при отказ

  2. Spring data redis отменя сериализатора по подразбиране

  3. Azure VM не се свързва с Azure Redis Cache, но локалният се свързва с Azure Redis Cache

  4. Как да изтриете всички данни в Redis

  5. Не можа да се свърже с Redis на 127.0.0.1:6379:Връзката е отказана с homebrew