在流明中找不到“ Redis”类

时间:2019-12-21 01:08:37

标签: php redis lumen

  • 流明版本:6.0
  • PHP版本:7.2
  • 数据库驱动程序和版本:MySql 5.7,Redis

image

代码

use Illuminate\Support\Facades\Redis;

Redis::set($key, $data, 'EX', $expiry);

在app.php中

$app->withFacades();
$app->withEloquent();

$app->register(Illuminate\Redis\RedisServiceProvider::class);

$app->configure('database');

使用上面的代码会给出找不到类'Redis'错误。仅当安装以下软件包时,才会发生此错误。

"illuminate/redis": "^6.5",
"illuminate/mail": "^6.5",
"laravel/lumen-framework": "^6.0",

使用以下具有较低版本的软件包,它可以正常工作而没有任何错误/问题。

"laravel/lumen-framework": "^5.8.*",
"illuminate/redis": "^5.8",
"illuminate/mail": "^5.8",

为什么升级包时会出错?

4 个答案:

答案 0 :(得分:3)

您可以修改config / database.php。

因为lumen6 redis默认驱动器使用了phpredis。

添加.env文件。

REDIS_CLIENT=predis

答案 1 :(得分:3)

如果您使用的是 Laravel 8,请在 database.php 文件中替换以下行:

'client' => env('REDIS_CLIENT', 'phpredis')

到:

'client' => env('REDIS_CLIENT', 'predis')

然后,使用 predis 添加 composer 依赖项:

composer require predis/predis

答案 2 :(得分:1)

确保设置并启用PHP Redis扩展。

即使这样做,也需要在app.php文件中注册Redis的别名。显然,您使用use语句引用了它,但这仅在您“使用”它的类中可见。 PHP Redis连接器将需要从全局某个位置(在app.php文件中)进行引用。 Laravel已经完成了这个设置,但是不幸的是Lumen没有。

为了安全起见,请通过检查类是否存在来包装它。

这就是我解决问题的方式。

#You already have this:
$app->register(Illuminate\Redis\RedisServiceProvider::class);

#Add the following right below
if (!class_exists('Redis')) {
    class_alias('Illuminate\Support\Facades\Redis', 'Redis');
}

答案 3 :(得分:1)

我要在流明7中修复此问题的步骤,

  • 安装“ illuminate / redis”软件包:composer require illuminate/redis:"^7.0"
  • 在我的CentOS7上安装“ php-redis”:yum --enablerepo=epel -y install php-pecl-redis
  • 安装“ predis”软件包:composer require predis/predis:"^1.0"
  • 将redis客户端更改为“ predis”(默认为“ phpredis”):'client' => 'predis'。所以配置是:
    'redis' => [
            'cluster' => false,
            'client' => 'predis',
            'default' => [
                'host'     => env('REDIS_HOST', '127.0.0.1'),
                'port'     => env('REDIS_PORT', 6379),
                'database' => env('REDIS_DATABASE', 0),
            ],
        ]