设置queue为redis驱动

queue驱动主要有sync,redis,database,mq  ,中小型系统建议使用redis, 复杂系统使用mq

初始默认为sync 这个分派任务的时候直接同步执行,修改为redis则使用redis 的list(尽快执行的队列)和zset(延时执行的队列)两种数据类型保存,也可以用数据库为驱动

QUEUE_CONNECTION=redis

并配置好你的redis,以下是我本机的配置

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DATABASE=0

2、创建任务,例子创建一个 aSampleQueue

artisan make:job aSampleQueue
class aSampleQueue implements ShouldQueue
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    private $mesaage;
    public function __construct($message)
        $this->mesaage = $message;

//handle 方法是队列需要执行的业务,这里用一个写一条日志作为业务内容 public function handle() \Log::info($this->mesaage); // }

4、分发内容给队列,本例子假定在路由上调用

Route::get('/test/queue/{name}', function ($name){
    App\Jobs\aSampleQueue::dispatch("创建用户:{$name}".date('H:i:s'));//立即执行的队列

假定域名为la.com,在浏览器输入:http://la.com/test/queue/lucas     ,到redis查看,如下图

 也可以制定队列名onQueue('delayQueueSample')和指定执行时间addMinutes(30) 

Route::get('/test/queue/{name}', function ($name){
    App\Jobs\aSampleQueue::dispatch("创建用户:{$name}".date('H:i:s'))->onQueue('delayQueueSample')->delay(\Illuminate\Support\Carbon::now()->addMinutes(30));//延迟30分钟执行 });

在redis查到该队列,说明写入成功

4、用命令行执行队列

php artisan  queue:work
                            
ios排序算法 排序算法 简书

基于比较的排序(时间复杂度极限O(nlogn))选择排序简介:这是一种最简单直观的排序,是稳定的排序算法。原理:每一趟从待排序的数列中选出最小的(最大的)一个元素,顺序放到已经排好序的数列的最后,直到所有待排元素全部排好.时间复杂度:O(n^2)过程演示|1 3 5 7 9 2 4 6 8 0 选择第一小的数与0位交换 1 3 5 7 9 2 4 6 8 0 0| 3 5