1. 程式人生 > >Lavavel5.5源代碼 - RedisQueue是怎麽實現

Lavavel5.5源代碼 - RedisQueue是怎麽實現

結構 edi 實現 redis 代碼 pop 必須 str 成功

隊列的基本功能:

  1、立即執行;yes
  2、延遲執行;yes
  3、保證至少執行一次;yes
  4、必須執行且最多執行一次;no

用到的數據結構:

  list、Sorted sets

延遲執行的機制:
  1、先把數據放入SortedSets類型的queues:queue_000:delayed中
  2、在執行pop的時候,執行lua腳本,把SortedSets類型的queues:queue_000:delayed 中可以執行的數據rpush到list類型的queues:queue_000中

保證執行成功的機制:
  1、把要執行的數據先放入SortedSets類型的queues:queue_000:reserved中
  2、在執行pop的時候,執行lua腳本,把SortedSets類型的queues:queue_000:reserved 中可以執行的數據rpush到list類型的queues:queue_000中
3、任務執行成功,從SortedSets類型的queues:queue_000:reserved中執行刪除預存的數據

Lavavel5.5源代碼 - RedisQueue是怎麽實現