Laravel v8.37.0 队列问题

说明

Redis 扩展已安装

版本

Laravel: v8.37.0
PHP: 7.4.13

问题一

Laravel 队列在使用Predis的时候,在Horizon中一直处于待处理状态,并且部分会出现超时的问题,其他错误提示日志就没有了。换成PhpRedis之后执行正常。

问题二

通过下面的方法可以获取到带有分数值的有序集合

Redis::zrevrange('ranking_list', 0, -1, 'WITHSCORES');

使用Predis返回的格式

[
    "用户ID" => "分值"
    ...
]

使用PhpRedis返回的格式

[
    "用户ID"
    ...
]

上面两种获取到的数值完全不一样,本身一行代码就可以读取到的数据,我还需要去用另一种方法遍历读取。
如果有大佬知道这两个问题,麻烦提个醒谢谢~

Web 开发者,Laravel 脑残粉,喜欢挑战探索新的东西,更喜欢完成一件有意义的事情之后的成就感!
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

第二个问题:把代码改为:

// phpredis|predis
Redis::zrevrange('ranking_list', 0, -1, ['WITHSCORES'=>true]);

就一样了

phpredis:
Laravel

predis:
Laravel

2年前 评论
Hollie (楼主) 2年前
LiamHao (作者) 2年前
Hollie (楼主) 2年前
讨论数量: 2

问题一

解决方案

因为项目中使用了Laravel-Echo按照以往的经验,需要在 database.php 文件中把 Redis 前缀去掉,去掉前缀可以解决前端监听不到的问题,却引发了Horizon无法处理队列的情况。所以只能把前缀打开,前端监听channel把前缀带上。

问题二

暂时还没有找到解决方法。

2年前 评论
LiamHao 2年前
Hollie (作者) (楼主) 2年前

第二个问题:把代码改为:

// phpredis|predis
Redis::zrevrange('ranking_list', 0, -1, ['WITHSCORES'=>true]);

就一样了

phpredis:
Laravel

predis:
Laravel

2年前 评论
Hollie (楼主) 2年前
LiamHao (作者) 2年前
Hollie (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!