出現原因(第一種)
- Laravel 使用 predis 擴展,同時 php 也安裝並使用了 phpredis 擴展。由於上述兩個 redis 擴展都是用了 Redis 作爲命名空間,造成命名空間衝突
出現原因(第二種)
- 真沒有靜態方法(😭)
- 你的 Laravel 項目中,之前使用的是 predis,現在切換成 phpredis。那麼之前代碼中的靜態的方法就會報錯
解決原因一方式
- 方式一: Laravel 中,由於 predis 是基於php製作的擴展,可通過 composer 添加,方便與 Laravel 整合。所以,可通過在 php.ini 中註釋 phpredis 的擴展,避免了衝突。
;extension = redis.so
- 缺點:
- predis 已經取消維護,Laravel 從6版本開始,推薦使用 phpredis
- 方式二: 代碼中,明確指明 Redis
use Illuminate\Support\Facades\Redis;
- 方式三: 當然,換個 aliase(別名) 也是穩的
config\app.php 當中
'Redis' => Illuminate\Support\Facades\Redis::class
替換爲
'想要的名稱' => Illuminate\Support\Facades\Redis::class
代碼中使用
use 想要的名稱;
解決原因二方式
注意鏈接
Laravel 6 使用 Redis 注意事項
phpredis 和 predis 區別