如何解决如何在Laravel 5.8中查找和删除延迟的Redis队列作业? 不使用数据库
我有一个通知系统,可以将作业分派给Redis,但要延迟10分钟。我想允许用户在宽限期内在这10分钟内编辑通知。我正在寻找一种方法来搜索Redis队列中的单个作业,然后取消该单个作业。
这里也有类似的帖子,但是它们都以“只使用数据库队列驱动程序”结尾。我宁愿不这样做,但如果那是唯一的方法,那那是唯一的方法。
据我所读,一旦将作业发送到Redis,便没有任何内置的laravel功能与之交互。但是我可以运行redis命令,这就是到目前为止我得到的...
$jobs = Redis::zrange('queues:default:delayed',-1);
返回看起来像这样的对象
{
+"displayName": "App\Jobs\DoTheThing"
+"job": "Illuminate\Queue\CallQueuedHandler@call"
+"maxTries": null
+"delay": null
+"timeout": null
+"timeoutAt": null
+"data": {#1211
+"commandName": "App\Jobs\DoTheThing"
+"command": "..."
}
+"id": "zR2JSo3pQqplo3aMMFofFe39V6OJNG"
+"attempts": 0
}
...是的,知道的不多...
我一直在阅读redis命令文档,但是在掌握它时遇到了麻烦。有某种搜索命令吗?像Redis::where('data.command.modelId',$modelId)
一样?我也不确定它将搜索什么。正则表达式位于data.command
上吗?
我也在研究向此redis对象添加其他属性的方法; displayName
旁边的东西很容易被搜索;甚至只是更改displayName以包含标识值(在我的情况下为modelId
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。