ucan-lab/docker-laravel-alpine

make tinker実行後にRedisに値をセットすると失敗する

KushibikiMashu opened this issue · 2 comments

素晴らしいプロジェクトを作っていただきありがとうございます!

READMEを見てRedisにを使ってみようと思い、下記コマンドを試したところ、エラーが表示されました。

$ make tikner
docker-compose exec app php artisan tinker
Psy Shell v0.9.9 (PHP 7.3.11 — cli) by Justin Hileman
>>> Redis::set(1,2)
PHP Error:  Non-static method Redis::set() cannot be called statically in Psy Shell code on line 1

下記のようにするとうまくいきました。

>>> use Illuminate\Support\Facades\Redis;
>>> Redis::set(1,2)
=> true
>>> Redis::get(1)
=> "2"

これについては、stackoverflowに解決方法が記載されていましたので、共有しますね。

(あるいは、自分のLaraveのバージョンは 6.0なので、それが関係しているかもしれません🙏)

@KushibikiMashu ありがとうございます! wikiに追記します!

Laravel 6.0 から Redisクライアントが predis から phpredis に変更されました。

https://laravel.com/docs/6.x/redis

そのため Redis のクラス名が競合を起こしてしまってます。
対処法としてはファサードクラスを明示的にインポートしてあげればokだと思います。

また、公式サイトでは Redisファサードエイリアス と PhpRedis拡張機能 を使用する場合はconfig/app.php 別の名前に変更する必要があるとの記述があります。

https://laravel.com/docs/6.x/redis#phpredis

'RedisManager' => Illuminate\Support\Facades\Redis::class,

Laravel6.0から、predisではなくphpredisを使うようになったのですね。

原因と解決法をお調べ頂きありがとうございました👍