
代码
use Illuminate\Support\Facades\Redis;
Redis::set($key, $data, 'EX', $expiry);
Run Code Online (Sandbox Code Playgroud)
在 app.php 中
$app->withFacades();
$app->withEloquent();
$app->register(Illuminate\Redis\RedisServiceProvider::class);
$app->configure('database');
Run Code Online (Sandbox Code Playgroud)
使用上面的代码会给出Class 'Redis' not found错误。仅当安装了以下软件包时才会发生此错误。
"illuminate/redis": "^6.5",
"illuminate/mail": "^6.5",
"laravel/lumen-framework": "^6.0",
Run Code Online (Sandbox Code Playgroud)
使用以下版本较低的软件包,它可以正常工作而不会出现任何错误/问题。
"laravel/lumen-framework": "^5.8.*",
"illuminate/redis": "^5.8",
"illuminate/mail": "^5.8",
Run Code Online (Sandbox Code Playgroud)
那么为什么在升级包时会出错。
pab*_*ros 14
如果您使用Laravel 8, 在database.php文件中替换以下行:
'client' => env('REDIS_CLIENT', 'phpredis')
Run Code Online (Sandbox Code Playgroud)
到:
'client' => env('REDIS_CLIENT', 'predis')
Run Code Online (Sandbox Code Playgroud)
然后,添加predis依赖项composer:
composer require predis/predis
Run Code Online (Sandbox Code Playgroud)
您可以修改 config/database.php。
因为 lumen6 redis 默认驱动使用的是 phpredis。
像这样添加 .env 文件。
REDIS_CLIENT=predis
Run Code Online (Sandbox Code Playgroud)
确保您设置并启用 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');
}
Run Code Online (Sandbox Code Playgroud)