(已经解决) Laravel Redis predis 切换到 phpredis
解决办法
- 首先,设置 .env 文件
REDIS_CLIENT=phpredis
或者 config/database.php 文件redis.client = phpredis
,来让 redis 使用 phpredis 的连接方式。 - 然后,重命名或者删除 config/app.php 文件里
'Redis' => Illuminate\Support\Facades\Redis::class,
。
原理
首先设置连接方式就不说了。
至于为什么要重命名,是因为 在 framework\src\Illuminate\Redis\Connectors\PhpRedisConnector.php 文件中的 createClient
方法会对当前的 Redis 对象进行验证。如果当前名为 Redis 的对象是 Illuminate\Support\Facades\Redis
的实例,就会报 Please remove or rename the Redis facade alias in your "app" configuration file in order to avoid collision with the PHP Redis extension.
。通过重命名或者删除之后,在该文件里的 Redis 对象会是 redis 扩展的对象,进而使用 Redis 扩展进行连接了。
可能的问题
Class 'Redis' not found
注意这个问题,可能你的 redis 扩展没有安装正确。或者!!!最重要的来了!!!你的命令行使用的 php 版本和网站的 php 版本不一!!!命令行使用的没有安装 redis 扩展!!!
以下为原文
问题描述
{note} 如果你是通过 PECL 安装 Redis PHP 扩展,就需要重命名
config/app.php
文件里Redis
的别名。
我看 laravel 原文也是这样写,但是我应该怎么做?可以 show 一下 code,让我看看么?
laravel 的版本是 5.8 ,上图是使用laravel-admin 中 redis 的插件,按照下面的方法操作后报的错:
config/app.php > 'aliases'\
去掉 'Redis' => '...' 去掉这行
config/app.php > 'aliases'
去掉 'Redis' => '...'去掉这行