我收到错误 NOAUTH必需的身份验证 。我的laravel版本是5.3,我正在使用predis 1.1.1连接redis。
在etc / redis / redis.conf中,我有:
bind 127.0.0.1 requirepass somepassword
在.env文件中
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=somepassword REDIS_PORT=6379
在config / database.php中,我有:
'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ],
我通过以下方式连接redis:
self::$_db = \Redis::connection('default');
并像这样使用它:
self::$_db->pipeline(function ($pipe) use ($profile, $time,$type, $id) { $pipe->zadd(self::getProfileKey($profile, $type), $time, $id); $pipe->zadd(self::getProfileKey($profile), $time, $type . ':' . $id); $pipe->zadd(self::getModelKey($type,$id) . '::favoritedBy', $time, $profile->profile_id); });
因此,当我注释掉requirepass并将密码发送为null时,它可以工作,但NOAUTH Authentication required.在密码到位后却无法工作并引发错误。我需要根据项目要求输入密码。请帮忙。提前致谢。
requirepass
NOAUTH Authentication required.
因此,在进行了一些研究之后,我得到了针对该问题的解决方案:
我们需要添加:
'options' => [ 'parameters' => ['password' => env('REDIS_PASSWORD', null)], ],
在config数组中。请参见下面的完整示例:database.php
config
'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 3, ], 'options' => [ 'parameters' => ['password' => env('REDIS_PASSWORD', null)], ], ],
在.env文件中:
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=mmdgreat REDIS_PORT=6379