非静态方法Redis :: get()不能在laravel 5.4中静态调用?

时间:2017-09-14 07:12:41

标签: php laravel amazon-ec2 redis laravel-5.4

我正在使用Redis存储数据一切正常在我的本地系统中运行。我已经使用此命令 composer require predis / predis 成功地在laravel中安装了redis,并且还安装了Redis设置窗口。现在,当我在Redis中存储数据时: -

Redis::set('first',"My first Test"); // put data in Redis key
echo Redis ::get('first'); // get data

以上代码在我的本地系统中正常运行。当我尝试在实时服务器中使用此代码时,它显示以下错误: - enter image description here 请帮我解决这个问题。我们正在使用amazon-ec2服务器提前感谢:)

3 个答案:

答案 0 :(得分:10)

我有同样的问题。但我相信它与php 7而不是Larevel 5.4相关,因为我使用Laravel 5.1而且我仍然有问题。

我遇到了2个解决方案

  1. 如果您想静态调用Redis方法,请使用use Illuminate\Support\Facades\Redis;代替use Redis;
  2. 更改为动态调用
  3. $redis = new Redis(); $redis->set('boo','Have beer and relax!') $redis->get('boo');

答案 1 :(得分:0)

  • 只需从php.ini中删除或注释掉extension = php_redis.dll
  • Laravel和服务器Redis与名称“ Redis”冲突
  • 这可以工作

答案 2 :(得分:0)

在Laravel数据库配置中,您可以为Redis处理程序定义一个客户端。 安装predis后,您的Redis数据库配置应如下所示

'redis' => [

           'client' => 'predis',

           'cluster' => false,

           'default' => [
                  'host' => env('REDIS_HOST', 'localhost'),
                  'password' => env('REDIS_PASSWORD', null),
                  'port' => env('REDIS_PORT', 6379),
                  'database' => 0,
           ],

PhpRedis扩展名和Redis Facades的Laravel别名相同,这是造成问题的原因。如果要使用PhpRedis扩展名,则需要在数据库配置中更改app.php和client中定义的别名关键字。