代码
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",
为什么升级包时会出错?
答案 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中修复此问题的步骤,
composer require illuminate/redis:"^7.0"
yum --enablerepo=epel -y install php-pecl-redis
composer require predis/predis:"^1.0"
'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),
],
]