美文网首页
laravel队列背景知识

laravel队列背景知识

作者: kasterSH | 来源:发表于2019-12-19 13:32 被阅读0次

    redis队列

    redis 做消息队列的特性例如 FIFO(先进先出)很容易实现,只需要一个 list 对象从头取数据,从尾部塞数据

    (1)左侧入右侧出:lpush/rpop;

    (2)右侧入左侧出:rpush/lpop。

    这个简单的消息队列很容易实现

    Zset 有序集合

    有些任务场景,并不需要任务立刻执行,而是需要延迟执行;有些任务很重要,需要在任务失败的时候重新尝试。这些功能仅仅依靠 list 是无法完成的。这个时候,就需要 redis 的有序集合。

    Redis 有序集合和 Redis 集合类似,是不包含相同字符串的合集。它们的差别是,每个有序集合的成员都关联着一个评分 score,这个评分用于把有序集合中的成员按最低分到最高分排列。

    单看有序集合和延迟任务并无关系,但是可以将有序集合的评分 score 设置为延时任务开启的时间,之后轮询这个有序集合,将到期的任务拿出来进行处理,这样就实现了延迟任务的功能。

    对于重要的需要重试的任务,在任务执行之前,会将该任务放入有序集合中,设置任务最长的执行时间。若任务顺利执行完毕,该任务会在有序集合中删除。如果任务没有在规定时间内完成,那么该有序集合的任务将会被重新放入队列中。

    (1) ZADD 添加一个或多个成员到有序集合,或者如果它已经存在更新其分数。

    (2) ZRANGEBYSCORE 按分数返回一个成员范围的有序集合。

    (3) ZREMRANGEBYRANK 在给定的索引之内删除所有成员的有序集合。

    相关文章

      网友评论

          本文标题:laravel队列背景知识

          本文链接:https://www.haomeiwen.com/subject/mxdmnctx.html