laravel - 如何配置 Laravel 以使用 PhpRedis?
问题描述
PHP 7.3
Laravel 5.8
到目前为止,我在 Laravel 项目中使用 Predis 作为我的缓存。现在我想切换到 PhpRedis。我读过它真的很简单(只是配置更改),但我有很多问题。我不知道从什么开始,所以我会写下我知道的所有内容。
我的托管服务提供商声称启用了 PhpRedis。
下面在控制器中执行的代码(设置了 Predis)工作正常 - 我收到了设置值。
$redis = 新的 \Redis();
$redis->connect('套接字路径', 0 );
$redis->set('test', 'testValue');
print_r($redis->get('test'));
但是,通过 SSH 执行的原始 PHP 文件中的相同代码返回“未捕获的错误:在...中找不到类 'Redis'”
让我们看看config/database.php的变化。这是我的配置:
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'/*'phpredis'*/),
'cluster' => true,
'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'/*'redis'*/),
'prefix' => Str::slug(env('APP_NAME'), '_').'_',
'parameters' => ['password' => env('REDIS_PASSWORD', null)],
],
'default' => [
'scheme' => 'unix',
'path' => env('REDIS_HOST'),
'host' => env('REDIS_HOST'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT'),
'database' => env('REDIS_CACHE_DB', 0)
],
(...) // other
],
- 当我在评论中更改这些值时,我的网站只显示一个空白页面 - 邮箱中的任何错误。
- 此外,当我在 SSH 中运行例如“php73 artisan config:clear”时,控制台会返回
“请在“app”配置文件中删除或重命名 Redis 外观别名,以避免与 PHP Redis 扩展发生冲突。” 在Illuminate/Redis/Connectors/PhpRedisConnector.php中。
当我将config/app.php 中的别名从“Redis”更改为“RedisManager”并重试时,它返回
Uncaught Error: Class 'Redis' not found in /path/vendor/laravel/framework/src/Illuminate/Redis/Connectors /PhpRedisConnector.php:70。
这是怎么回事?如何设置 Laravel 的配置以使用 PhpRedis?也许这是我的托管服务提供商问题?提前感谢您的每一个建议。
如果我错过了一些重要的代码,请给我一个标志 - 我会添加它。
解决方案
PHPRedis 库默认情况下不安装在共享主机环境中,并且默认情况下通常不包含在 PHP 安装中。您必须要求您的主机在他们的共享托管平台中安装这些库。
推荐阅读
- reactjs - Axios 错误处理 err.response 对象
- node.js - 将 nguniversal/express-engine 添加到 Angular 项目:“在 /src/app/app.module.ts 中找不到 BrowserModule 导入”
- c - 如何更改C中链表中节点的数据?
- c++ - 无法分配 C++ 数组
- javascript - 如果 id 有特定的类,使用 JS/jQuery Show() + Hide() 排序?
- python - TypeError:无法将 int 隐式转换为 str
- verilog - 为什么数组不能为 wdata 赋值?
- python - 使用 Python 在 BigQuery 中创建表的范围分区
- python - 是否可以在不访问内置函数的情况下将 ASCII 整数转换为字符?
- spring - 在 Spring Boot 2 中,是否可以自动生成具有唯一约束的 JoinTable?