如何清空Laravel 5.x/6.x/7.x版本Redis数据库中指定队列的全部任务
Laravel 8 之前版本清空Redis指定队列任务的方法
以下两种方案都可以实现指定队列的清空操作,仅建议在开发环境使用,生产环境操作前请做好数据备份。
方案1:自定义Artisan命令(可重复使用,更适合项目长期维护)
- 执行命令生成自定义指令文件
php artisan make:command ClearRedisQueueCommand - 打开生成的
app/Console/Commands/ClearRedisQueueCommand.php文件,替换为以下内容:<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\Redis; class ClearRedisQueueCommand extends Command { protected $signature = 'queue:clear-redis {queue?}'; protected $description = '清空Redis中指定队列的所有任务,默认清空default队列'; public function handle() { $queue = $this->argument('queue') ?? 'default'; $keys = [ "queues:{$queue}", "queues:{$queue}:delayed", "queues:{$queue}:reserved", ]; Redis::del($keys); $this->info("队列 {$queue} 已清空成功"); } } - 后续需要清空队列时,直接执行对应指令即可:
- 清空default队列:
php artisan queue:clear-redis - 清空名为notify的队列:
php artisan queue:clear-redis notify
- 清空default队列:
方案2:直接操作Redis CLI(无需修改代码,适合临时使用)
- 进入Redis命令行界面:
redis-cli - 如果你的Redis设置了密码,先执行认证:
auth 你的Redis密码 - 切换到队列存储对应的Redis数据库,默认使用0号库:
select 0 - 可先查询所有队列相关的key,确认要清空的队列名称:
keys queues:* - 执行删除命令清空指定队列的所有任务,以清空
default队列为例:del queues:default queues:default:delayed queues:default:reserved
注意:操作前请确认队列名称,避免误删其他队列的有效任务。
内容的提问来源于stack exchange,提问作者YannPl
相关产品推荐
相关产品推荐

