Background
Attempting to use PhpRedis in Laravel 5.3 on a Mac OSX local server
running Apache 2.4.18, Php 7.0.14 and homebrew
...without requiring additional (non-official) composer libraries
Redis is installed via homebrew install redis
and working
tested by redis-cli ping
which gives PONG
PhpRedis installed via homebrew install php70-redis
and working
tested by php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"
which gives OK
Setup
With the documentation and this SO Laravel 4 solution I do the following:
- change (or comment & add)
alias
definition in app/config/app.php from
'Redis' => 'Illuminate\Support\Facades\Redis'
to
'LRedis' => 'Illuminate\Support\Facades\Redis'
- add client definition to the
redis
database definition in config/database.php
'client' => 'phpredis',
- run
composer dump-autoload
andphp artisan optimize
use that renamed alias in an example route code:
Route::get('redistesturl', function () { $app = LRedis::connection(); $app->set("name", "Bob Cool"); print_r($app->get("name")); });
Errors
FatalThrowableError in Database.php line 62:
Class 'Predis\Client' not found
Also tested calling redis within route as per SO answer mentioned above :
$redis = Illuminate\Support\Facades\Redis::connection();
...but get same error
If I try to access LRedis
class from within a controller like this:
use Illuminate\Support\Facades\Redis;
class MyController extends Controller
{
public function redistest(){
$redis = LRedis::connection();
$redis->set('name', 'Bob Cool');
return $redis->get('name');
}
}
I get the following error:
FatalThrowableError in Preferences.php line 15:
Class 'App\Http\Controllers\LRedis' not found
Notes
Tested Predis
and got it working fine by only adding the official predis
library as specified in the docs.
I can get PhpRedis to work fine on my system (with the same route & controller examples) if I use an additional library like this one by following this Laracast ...however this question is specifically:
"How to set up PhpRedis in Laravel 5+ without additional composer libraries?"
You have not include namespace for LRedis class