千家信息网

Lavavel5.5源代码 - RedisQueue是怎么实现

发表于:2024-10-14 作者:千家信息网编辑
千家信息网最后更新 2024年10月14日,队列的基本功能:1、立即执行;yes2、延迟执行;yes3、保证至少执行一次;yes4、必须执行且最多执行一次;no用到的数据结构:list、Sorted sets延迟执行的机制:1、先把数据放入So
千家信息网最后更新 2024年10月14日Lavavel5.5源代码 - RedisQueue是怎么实现

队列的基本功能:

  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中执行删除预存的数据

0