после поиска и отладки, вот что заставило его работать:
'redis' => [
'client' => 'predis',
'cluster' => true,
'options' => [
'cluster' => 'redis',
'parameters' => [
'host' => env('REDIS_DEFAULT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_DEFAULT_PORT', 6379),
'database' => 0,
],
],
'clusters' => [
'default' => [
'host' => env('REDIS_DEFAULT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_DEFAULT_PORT', 6379),
'database' => 0,
],
'jobs' => [
'host' => env('REDIS_JOBS_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_JOBS_PORT', 6379),
'database' => 0,
],
'content' => [
'host' => env('REDIS_CONTENT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_CONTENT_PORT', 6379),
'database' => 0,
],
'options' => [
'cluster' => 'redis'
],
]
]
примечание: одна очевидная ошибка в моей конфигурации в приведенном выше вопросе заключалась в том, что я объединил хост и порт, который я исправил здесь.Вот как выглядит мой .env файл:
REDIS_DEFAULT_HOST=127.0.0.1
REDIS_JOBS_HOST=127.0.0.1
REDIS_CONTENT_HOST=127.0.0.1
REDIS_DEFAULT_PORT=7000
REDIS_JOBS_PORT=7001
REDIS_CONTENT_PORT=7002
Примечание: я создал кластер, используя следующие инструкции: https://redis.io/topics/cluster-tutorial#creating-the-cluster
Методология исследования
В связи сфакт, что: 1. в документации laravel / predis по этому вопросу отсутствует 2. большинство ответов о переполнении стека имеют следующие строки: после поиска в Google и поиска .. это то, что сработало для меня без особых объясненийо том, что происходит
Я подумал, что могу немного помочь, показав как Я нашел ответ на этот вопрос.
1) Решение проблемы с ошибкой
Для устранения этой ошибки
local.ERROR: Symfony \ Component \ Debug \ Exception \ FatalThrowableError: Ошибка типа: Аргумент 1, переданный в Predis \ Connection \ Parameters :: __ construct (), должен иметьмассив типов с указанным целым числом вызывается в /Users/Shared/dev/php/toters-api/vendor/predis/predis/src/Connection/Factory.php в строке 164 в / Users / Shared / dev / php / toters-api / vendor / predis / predis / src / Connection / Parameters.php: 34 Stack trace:
Я понял, что мой формат config / database.php был просто неверным.Поиск в Google не дал мне четкой картины, поэтому я решил использовать в коде xdebug и dive .Примечание: у меня была трассировка стека ошибок (показанная в вопросе выше), напечатанная в одном документе, и я использовала ее как вид с высоты птичьего полета, чтобы направлять меня по шагам отладки (то есть переходить / входить / выходить и т. Д., Всегда печатая выходные данныев отдельном документе и сравнивая его с моим config / database.php для проверки работоспособности / отладки компаса).
После копания и печати я наткнулся на это:
[ *Locals ] [ Superglobals ] [ User defined constants ]
- Locals at /Users/Shared/dev/php/toters-api/vendor/predis/predis/src/Client.php:55
▾ $options = (array [1])
\
⬦ $options["cluster"] = (string [5]) `redis`
/
▾ $parameters = (array [4])
\
⬦ $parameters[0] = (string [14]) `127.0.0.1:7000`
|
⬦ $parameters[1] = (null)
|
⬦ $parameters[2] = (int) 6379
|
⬦ $parameters[3] = (int) 0
/
▾ $this = (Predis\Client [3])
\
⬦ $this->connection = (null)
|
⬦ $this->options = (null)
|
⬦ $this->profile = (null)
/
Я сравнилэто с содержимым моего .env файла:
REDIS_DEFAULT_HOST=127.0.0.1:7000
REDIS_JOBS_HOST=127.0.0.1:7001
REDIS_CONTENT_HOST=127.0.0.1:7002
, и я понял, что формат был неправильным, я не должен помещать порт хоста AND в одну и ту же переменную env .. поэтому я вместо этого поставил это так:
REDIS_DEFAULT_HOST=127.0.0.1
REDIS_JOBS_HOST=127.0.0.1
REDIS_CONTENT_HOST=127.0.0.1
REDIS_DEFAULT_PORT=7000
REDIS_JOBS_PORT=7001
REDIS_CONTENT_PORT=7002
и это решило мою первую проблему.
2) решение других проблем
после исправления вышеизложенного я получил это
CLUSTERDOWN Хэш-слот не обслуживается
это было довольно просто, это всего лишь вопрос поиска сообщения об ошибке (поскольку сообщение об ошибке было явно сообщением об ошибке Redis, а не какой-то загадочной оболочкой библиотекикак прсообщение об ошибке edis) .. и я нашел этот ответ .
Остальное было легко.
![enter image description here](https://i.stack.imgur.com/nyWBz.jpg)