一分钟laravel8-异步队列redis.list的简单使用

1、先简单来个路由,在/routes/api.php

Route::get('machine_export',[Admin\Machine\MachineController::class,'export']);//机具导出

2、然后在所属控制器新增方法

    /**
     * 机具导出
     *
     * @return \Illuminate\Http\Response
     */
    public function export(Request $request)
    {
        try {
            $exports = Export::create([
                'task_no'   => 'EXP'.date('YmdHis').rand(1000,9999),
                'table'     => 'machines',
                'params'    => json_encode(array_merge($request->input(),['brands'=>$request->get('brands')])),
                'remark'    => '机具导出',
                'operate'   => $request->get('user')->account,
                'attributes'=> json_encode($request->get('user')),
                'state'     => 0,
                'brands_id' => $request->get('brands')
            ]);
            MachineExportJob::dispatch($exports)->onQueue('machineExport');

            return response()->json(['code' => 'success', 'msg' => '操作成功,请稍后去导出列表查看']);
        } catch (\Throwable $th) {
            return response()->json(['code' => 'error', 'msg' => '系统错误']);
        }
    }

onQueue方法代表启用异步队列,并且指定list名称为machineExport,如果不使用onQueue方法,那么代表你的请求会是同步执行,那样子会延长程序处理时间。

3、新增一个job

php artisan make:job export\MachineExportJob

他将会在app/jobs/export/MachineExportJob.php新增一个文件,你可以在该文件编写你的异步业务逻辑,编写完成。

4、测试请求

 5、去redis里面找找待消费的数据

redis-cli -a 123456

一共有两个两个list,一个记录待消费数据,一个记录个数。

127.0.0.1:6379> lrange _database_queues:machineExport 0 1
1) "{\"uuid\":\"7b8babc7-1579-434e-b2d9-85f21d8ce501\",\"displayName\":\"App\\\\Jobs\\\\export\\\\MachineExportJob\",\"job\":\"Illuminate\\\\Queue\\\\CallQueuedHandler@call\",\"maxTries\":null,\"maxExceptions\":null,\"failOnTimeout\":false,\"backoff\":null,\"timeout\":3600,\"retryUntil\":null,\"data\":{\"commandName\":\"App\\\\Jobs\\\\export\\\\MachineExportJob\",\"command\":\"O:32:\\\"App\\\\Jobs\\\\export\\\\MachineExportJob\\\":14:{s:7:\\\"timeout\\\";i:3600;s:10:\\\"\\u0000*\\u0000exports\\\";O:45:\\\"Illuminate\\\\Contracts\\\\Database\\\\ModelIdentifier\\\":4:{s:5:\\\"class\\\";s:17:\\\"App\\\\Models\\\\Export\\\";s:2:\\\"id\\\";i:26;s:9:\\\"relations\\\";a:0:{}s:10:\\\"connection\\\";s:5:\\\"mysql\\\";}s:9:\\\"\\u0000*\\u0000params\\\";O:8:\\\"stdClass\\\":1:{s:6:\\\"brands\\\";i:1;}s:12:\\\"\\u0000*\\u0000adminUser\\\\u0000adminUser\\\";O:8:\\\"stdClass\\\":7:{s:7:\\\"account\\\";s:5:\\\"admin\\\";s:4:\\\"name\\\";s:15:\\\"\xe8\xb6\x85\xe7\xba\xa7\xe7\xae\xa1\xe7\x90\x86\xe5\x91\x98\\\";s:5:\\\"state\\\"\\\";i:1;s:7:\\\"r;i:1;s:5:\\\"rules\\\";i:1;s:7:\\\"role_id\\\";i:1;s:11:\\\"is_external\\\";s:0:\\\"\\\";s:7:\\\"pattern\\\";s:0:\\\"\\\";}s:3:\\\"job\\\";N;s:10:\\\"connection\\\";N;s:5:\\\"queue\\\";s:13:\onnection\\\";N;s:\\"machineExport\\\";s:15:\\\"chainConnection\\\";N;s:10:\\\"chainQueue\\\";N;s:19:\\\"chainCatchCallbacks\\\";N;s:5:\\\"delay\\\";N;s:11:\\\"afterCommit\\\";N;s:10:\\\"middleware\\\";a:0:{}saSsDxmbbMLntg16PC\:7:\\\"chained\\\";a:0:{}}\"},\"id\":\"3GzeSqI3NB4rAojaSsDxmbbMLntg16PC\",\"attempts\":0}"
127.0.0.1:6379> lrange _database_queues:machineExport:notify 0 2
1) "1"
127.0.0.1:6379>

6、消费list数据

php artisan queue:listen --queue=machineExport

会有提示信息。

[2023-07-07 18:11:18][3GzeSqI3NB4rAojaSsDxmbbMLntg16PC] Processing: App\Jobs\export\MachineExportJob
[2023-07-07 18:11:19][3GzeSqI3NB4rAojaSsDxmbbMLntg16PC] Processed:  App\Jobs\export\MachineExportJob

7、消费完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel Redis商城是一个使用Laravel框架和Redis作为队列系统的电子商务平台。在Laravel框架中,使用Redis作为队列驱动器可以提高系统性能和并发处理能力。你可以使用Laravel队列功能来处理异步任务,例如订单处理、库存管理等。 为了配置Laravel Redis商城,你需要按照以下步骤进行操作: 1. 首先,确保你已安装好Redis并且在Laravel项目中引入了Redis相关的依赖。 2. 在Laravel项目的.env文件中,找到QUEUE_CONNECTION参数,并将其设置为redis,即QUEUE_CONNECTION=redis。这将告诉Laravel使用Redis作为队列驱动器。 3. 接下来,你需要在config/queue.php文件中配置Redis队列的连接信息。你可以指定Redis的主机、端口、密码等信息。确保你的Redis服务器已正确配置。 4. 在你的Laravel代码中,你可以使用队列功能来将任务推送到Redis队列中。例如,你可以使用dispatch()函数来分发一个任务到队列中,然后由后台的工作进程来处理该任务。 5. 如果你遇到了在配置Redis队列时出现的问题,你可以参考Laravel的官方文档或Laravel China社区的相关讨论帖子来解决。有时问题可能会出现在.env文件的配置或Redis服务器的设置上。 总之,Laravel Redis商城是一个基于Laravel框架和Redis队列的电子商务平台,通过配置好Redis队列,你可以实现高效的异步任务处理。希望这些信息能帮助到你!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Laravel redis队列不执行](https://blog.csdn.net/u014764449/article/details/125484487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【Redis从头学-完结】Redis全景思维导图一览!耗时半个月为Redis初学者准备的专栏!](https://download.csdn.net/download/2302_79094329/88285139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值