首页 > 解决方案 > 如何配置 Laravel 以使用 PhpRedis?

问题描述

PHP 7.3
Laravel 5.8

到目前为止,我在 Laravel 项目中使用 Predis 作为我的缓存。现在我想切换到 PhpRedis。我读过它真的很简单(只是配置更改),但我有很多问题。我不知道从什么开始,所以我会写下我知道的所有内容。

  1. 我的托管服务提供商声称启用了 PhpRedis。

  2. 下面在控制器中执行的代码(设置了 Predis)工作正常 - 我收到了设置值。

    $redis = 新的 \Redis();

    $redis->connect('套接字路径', 0 );

    $redis->set('test', 'testValue');

    print_r($redis->get('test'));

  3. 但是,通过 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
        ],
  1. 当我在评论中更改这些值时,我的网站只显示一个空白页面 - 邮箱中的任何错误。
  2. 此外,当我在 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?也许这是我的托管服务提供商问题?提前感谢您的每一个建议。
如果我错过了一些重要的代码,请给我一个标志 - 我会添加它。

标签: laravelredisshared-hostingphpredis

解决方案


PHPRedis 库默认情况下不安装在共享主机环境中,并且默认情况下通常不包含在 PHP 安装中。您必须要求您的主机在他们的共享托管平台中安装这些库。


推荐阅读