如何在Laravel 5 +中设置PhpRedis?

时间:2016-12-22 20:16:52

标签: laravel laravel-5 redis laravel-5.3 phpredis

背景
尝试在Mac OSX本地服务器上使用Laravel 5.3中的PhpRedis
运行Apache 2.4.18,Php 7.0.14和homebrew
......不需要额外的(非官方)作曲家库

Redis已通过homebrew install redis安装并正常工作 由redis-cli ping进行测试,得出PONG

PhpRedis通过homebrew install php70-redis安装并工作
php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"进行测试,得出OK

设置
使用documentation和此SO Laravel 4 solution,我执行以下操作:

  1. 在app / config / app.php中更改(或评论并添加)alias定义 'Redis' => 'Illuminate\Support\Facades\Redis'

    'LRedis' => 'Illuminate\Support\Facades\Redis'
  2. 将客户端定义添加到config / database.php中的redis数据库定义中 'client' => 'phpredis',
  3. 运行composer dump-autoloadphp artisan optimize
  4. 在示例路由代码中使用重命名的别名:

    Route::get('redistesturl', function () { $app = LRedis::connection(); $app->set("name", "Bob Cool"); print_r($app->get("name")); });

  5. 错误

    FatalThrowableError in Database.php line 62:
    Class 'Predis\Client' not found
    

    还根据SO answer mentioned above测试了在路线中调用redis:

    $redis = Illuminate\Support\Facades\Redis::connection();
    

    ...但是得到同样的错误

    如果我尝试从这样的控制器中访问LRedis类:

    use Illuminate\Support\Facades\Redis;
    
    class MyController extends Controller
    {
        public function redistest(){
            $redis = LRedis::connection();
            $redis->set('name', 'Bob Cool');
            return $redis->get('name');
        }
    }
    

    我收到以下错误:

    FatalThrowableError in Preferences.php line 15:
    Class 'App\Http\Controllers\LRedis' not found
    

    备注
    经过测试Predis并通过仅添加文档中指定的官方predis库使其工作正常。

    如果我按照like this one使用额外的库this Laracast,我可以让PhpRedis在我的系统上正常工作(使用相同的路由和控制器示例)那么这个问题具体是:

    "如何在没有其他作曲家库的情况下在Laravel 5+ 中设置PhpRedis?"

2 个答案:

答案 0 :(得分:1)

FatalThrowableError in Preferences.php line 15:
Class 'App\Http\Controllers\LRedis' not found

您没有为 LRedis 类包含命名空间

<?php
use LRedis

答案 1 :(得分:0)

您需要 PHP Redis 二进制文件。

https://github.com/phpredis/phpredis/blob/develop/INSTALL.markdown

pecl install redis